디자인패턴

|

http://masamune.tistory.com/84
http://blog.daum.net/question0921/275

디자인 패턴

디자인 패턴은 아키텍트가 관심사항의 분리 작업을 통해 프로세스패키지클래스 등을 도출하면서 직면하게 되는 각종 문제들에 대한 해결방안을 찾을 때 많은 도움을 받을 수 있습니다.

 

디자인 패턴을 소개하면서 브라이언 후트의 건축가 비유가 가끔 인용되는데,

건물설계와 인도설계를 맡은 게으른 건축가가 건물설계를 했는데 인도설계는 하지 않았다예정대로 건물은 만들어 졌는데인도는 만들어지지 않았고사람들은 인도가 없기 때문에 제일 편하고 빠르다고 생각되는 곳으로 각자 다니기 시작했다건축가는 그냥 사람들이 많이 다녀서 생긴 자국만을 이용하여 인도를 설계 했고만들어진 인도는 대 성공작이었다.”

※ 디자인 패턴은 남이 수많은 시행착오를 겪으며구축해 놓은 좋은 설계들을 인용해서 새롭게 구축할 시스템에 이용하는 것입니다.

 

생성패턴

객체를 생성하고 참조하는 과정을 추상화하여 시스템이 객체의 생성과 조합 등에 구애받지 않고 개발될 수 있도록 도와준다특정 객체가 생성되고 변경되어도 전체 시스템의 변화는 최소화 되도록 만들어시스템의 확장이나 유지보수 시 최소비용이 들도록 만들어 줍니다.

객체지향 시스템은 필요한 메소드의 수행이나 데이터의 접근을 위해 항상 객체를 이용해야 되기 때문에어떤 객체를 생성해서 운용해야 되는지를 모든 모듈들이 고민해야 합니다.

구축이 끝난 시스템이나 구축 중인 시스템에서사용되는 객체의 변화에 따라 관려된 모든 모듈과 시스템이 의존적으로 동작하게 되는데,이 부분을 독립시킬(비 의존적으로 만들수 있다면 시스템의 구축이나 유지보수확장 등에 많은 도움을 받게 됩니다.

 

생성패턴의 종류

팩토리 메소드 추상 팩토리 빌더 패턴 프로토타입 패턴 싱글톤 패턴

 

팩토리 메소드 패턴

→ 동적으로 변환되는 객체를 효율적으로 활용하기 위해상황에 맞는 객체를 반환하는 팩토리 객체를 작성합니다이때 팩토리 객체가 리턴하는 객체는 동적으로 변환되는 객체의 조상객체인데실제로는 일반객체가 조상객체로 형변환 된 객체입니다팩토리 객체로부터 객체를 반환받은 모듈은 별다른 조작없이 반환된 객체의 메소드를 활용하면 됨으로 모듈은 객체의 변환에 독립적인 수 있다.

 

추상 팩토리 패턴

→ 동적으로 변환되는 객체들이 그룹으로 이루어져 있을 때팩토리 메소드 객체의 기능을 하는 객체를 한 번 더 추상화해서 추상 팩토리 객체를 만들어 줍니다그런 다음 팩토리 객체가 반환하는 객체를 하나가 아닌 여러 그룹이 되도록 만들어사용자는 팩토리 객체가 반환하는 객체들을 마치 하나의 객체인 것처럼 활용할 수 있게 됩니다그리고 객체들의 동적인 변환에 독립적인 코드를 작성할 수 있습니다.

 

싱글톤 패턴(객체를 오직 하나만 생성)

→ 싱글톤 객체가 가진 데이터는 다른 모듈이 변경한 값을 그대로 반영할 수 있고전역변수처럼 여러 모듈이 효과적으로 활용하는 전역 객체가 됩니다.

 

구조패턴

여러 클래스들로 이루어진 시스템은 일반적으로 복잡한 구조를 가지게 됩니다하지만 너무 복잡한 구조는 종종 고칠 엄두를 내지 못하게 만들기도 합니다심지어는 며칠 전에 개발을 잠시 중단했던 부분을 다시 시작하는 것인데도 처음 접하는 것처럼 고생하게 만들 때도 있습니다.

 

구조패턴의 종류

퍼케이드 패턴 어댑터 패턴 브릿지 패턴 컴포지트 패턴 데코레이터 플라이웨이트 프록시 패턴

 

퍼케이드 패턴

→ 하나의 목적을 위해 여러 개의 오브젝트들이 유기적으로 연결되는 경우가 많습니다이때 오브젝트들을 하나로 묶을 수 있다고 판단이 되면별도의 오브젝트를 새롭게 만든 뒤사용자들에게 새롭게 만든 오브 젝트의 인터페이스를 이용하여 다른 오브젝트까지 모두 사용할 수 있게 만들 수 있다.

인터페이스를 이용하여 다른 여러 오브젝트를 사용할 수 있게 만드는 패턴

어댑터 패턴

→ 기존에 존재하는 클래스를 직접 변경하지 않고도 원하는 형태의 인터페이스를 가지게 만드는 데 효과적으로 사용할 수 있는 패턴으로,외부에서 구입한 클래스나 다른 부서가 개발한 클래스들이 적용하고자 하는 시스템에 적합하지 않을 경우시스템을 변경하지 않고도 이들 클래스를 활용할 수 있는 방법을 제공합니다.

 

데코레이터(장식자패턴

→ 장식 시켜주는 객체들과 장식받을 객체들을 만든 뒤이들을 이용하여 장식 받을 객체가 원하는 모양이 되도록 만들어 주는 것입니다.이때 기존의 객체를 활용하고 있던 모듈은 장식이 이루어지는 것과 무관하게 작동함.

 

행위패턴

객체들 사이의 행위나 알고리즘 등과 관련된 패턴으로응용 분야에 따라 행위가 다른 객체로 옮겨가거나 알고리즘이 대체되는 경우가 존재할 때 사용

 

행위패턴의 종류

메멘토 패턴, CoR 패턴이터레이터 패턴등등..

 

메멘토 패턴

→ 예전에 수행했던 작업을 기억하고 이전의 작업으로 복귀해야 하는 구조를 가져야 할 때 유용하게 사용할 수 있는 패턴(취소” 기능을 제공해야 되는 프로그램에서 아주 유용하게 활용할 수 있음.)

 

CoR 패턴

→ 사용자가 원하는 작업을 어떤 객체에게 시킬지 모를 때그냥 작업을 객체들의 집합에 던져 버리면 되도록 만드는 패턴임.











'개발/활용정보' 카테고리의 다른 글

blotware, crapware  (0) 2011.05.27
구글맵 api 를 이용한 map service  (0) 2011.05.20
C, C++ 스마트 포인터  (0) 2011.05.06
Deadlock...  (0) 2011.05.06
SubVersion + Trac + Apache --;  (0) 2011.04.13
And