GOF의 디자인 패턴은, 오랜 시간 동안 발전, 진화되어 온 특정 문제에 대한 해결책들을 집대성한 것입니다.
총 패턴은 23가지이며, 3가지 패턴으로 분류 할 수 있습니다.
생성패턴, 구조 패턴, 행동 패턴의 형태로 나뉘고,
생성패턴에는 5개의 패턴(추상 팩토리, 빌더, 팩토리 메서드, 원형, 단일체)이 있고,
구조 패턴에는 7개의 패턴(적응자, 가교, 복합체, 장식자, 퍼사드, 플라이급, 프록시)가 있습니다.
마지막으로 행동패턴에는 11개의 패턴(책임연쇄, 명령, 해석자, 반복자, 중재자, 메멘토, 감시자, 상태, 전략, 템플릿 메서드, 방문자)가 있습니다.
목적 |
||||
생성 패턴 |
구조 패턴 |
행동 패턴 |
||
범위 | 클래스 | 1. 팩토리 메서드 |
1. 적응자 |
1. 해석자 2. 템플릿 메서드 |
객체 | 2. 빌더 |
2. 가교 |
3. 명령 |
|
3. 추상팩토리 |
3. 복합체 |
4. 책임연쇄 |
||
4. 원형 |
4. 장식자 |
5. 반복자 |
||
5. 단일체 |
5. 퍼사드 |
6. 중재자 |
||
|
6. 플라이급 |
7. 메멘토 |
||
7. 프록시 |
8. 감시자 |
|||
|
9. 상태 |
|||
10. 전략 |
||||
11. 방문자 |
||||
(각 항목에 대해서는 정리하여 링크로 추가 될 예정입니다.)
위의 표는 목적과, 범위에 따라 분류할 수 있습니다.
목적으로 나눈 분류 기준의
생성 패턴은 객체의 생성 과정에 관여하는 것이고,
구조 패턴은 클래스나 객체의 합성에 관한 것,
행동패턴은 클래스나 객체들이 상호작용하는 방법과 책임을 분산하는 방법을 정의합니다.
범위로 나눈 분류기준인
클래스 패턴은 클래스와 서브클랙스간의 관련성을 다루는 것이고,
관련성은 주로 상속이며,
컴파일 타임에 정적으로 결정됩니다.
객체 패턴은 객체 관련성을 다루는 패턴으로서,
런타임에 변경할 수 있으며 더 동적인 성격을 가집니다.
대부분의 패턴들은 어느 정도 상속을 이용합니다.