설계 패턴에 대해서 처음 접하거나 익숙하지 않을 경우, 특정 설계 문제를 해결하는 패턴을 선택하는데 있어서 어려움이 따른다. 디자인 패턴 책에서는 특정 문제에 적합한 설계 패턴을 선택하는 접근 방법에 대해서 다음과 같이 설명되어 있다.
1. 설계 패턴이 어떻게 설계 문제를 해결하는지를 고려하라.
2. 의도(intent) 절을 잘 읽어보라.
3. 패턴들끼리 어떤 관계가 있는지를 이해하라.
4. 유사한 목적(purpose)를 가지는 패턴들을 숙지하라.
5. 재설계에 대한 원인을 파악하라.
6. 설계에서 변동성이 있어야 되는 것이 무엇인지를 고려하라.
2. 의도(intent) 절을 잘 읽어보라.
3. 패턴들끼리 어떤 관계가 있는지를 이해하라.
4. 유사한 목적(purpose)를 가지는 패턴들을 숙지하라.
5. 재설계에 대한 원인을 파악하라.
6. 설계에서 변동성이 있어야 되는 것이 무엇인지를 고려하라.
의도 (purpose) | 설계 패턴 | 변동될 수 있는 부분 |
생성 | Abstract Factory | 제품 객체들에 대한 군(family) |
Builder | 복합 객체를 생성시키는 방법 | |
Factory Method | 인스턴스화 되는 객체의 하위 클래스 | |
Prototype | 인스턴스화 되는 객체의 클래스 | |
Singleton | 특정 클래스의 단독 인스턴스 | |
구조 | Adapter | 특정 객체에 대한 인터페이스 |
Bridge | 특정 객체에 대한 구현체 | |
Composite | 특정 객체에 대한 구조와 복합 구조 | |
Decorator | 하위 클래스가 없는 객체에 대한 책임성(responsiblity) | |
Facade | 서브시스템에 대한 인터페이스 | |
Flyweight | 객체에 대한 저장 비용 | |
Proxy | 특정 객체에 대한 접근 방법 (객체의 위치) | |
행위 | Chain of Responsibility | 요청을 수행할 수 있는 객체 |
Command | 요청에 대한 수행 시기와 방법 | |
Interpreter | 특정 언어(language)에 대한 문법과 해석(interpretation) | |
Iterator | 특정 집합(aggregate) 요소들에 대한 접근 방법과 탐색(traverse) 방법 | |
Mediator | 객체와 각각의 다른 객체와의 상호작용 방법과 대상 | |
Memento | 외부에 있는 객체에 저장되는 내부(private) 정보의 정의와 시기 | |
Observer | 또 다른 객체에 의존적인 객체들의 수와 의존 객체들의 최신 상태 유지 방법 | |
State | 특정 객체의 상태 | |
Strategy | 알고리즘 | |
Template Method | 알고리즘의 단계들 | |
Visitor | 객체들의 클래스를 변경하지 않고 객체에 적용될 수 있는 오퍼레이션들 |
반응형
'Homo Design' 카테고리의 다른 글
시스템 설계를 바라보는 두가지 관점 (0) | 2011.08.17 |
---|---|
테스트케이스, 유스케이스, 그리고 인터페이스 식별 (0) | 2011.06.28 |
Responsive Design - Kent Beck (0) | 2009.09.06 |
설계 패턴 (Design Pattern) 사용법 (0) | 2009.08.31 |
첫단어 (First Word) (0) | 2009.08.28 |