글
'Pattern' 이란 특정 컨텍스트 내에서 주어진 문제에 대한 해결책이다.
- 'Context' 란 패턴이 적용되는 상황을 뜻하고, 반복적으로 일어날 수 있는 상황이어야만 한다.
- 'Problem' 이란 이루고자 하는 목적을 뜻하며 제약조건도 포함된다.
- 'Solution' 이란 누구든지 적용해서 일련이 제약조건 내에서 목적을 달성할 수 있는 일반적인 디자인을 뜻한다.
※ 'Force' : Problem 이 목적과 제약조건으로 구성되는데, 이를 합쳐서 Force 라 한다.
Solution 이 Force 의 양면 사이에서 균형을 이룰 수 있어야만 제대로 된 패턴이 만들어진다.
# 1~11 장 까지 배웠던 패턴 복습 #
- Strategy :
교환 가능한 행동을 캡슐화하고 위임을 통해서 어떤 행동을 사용할지 결정한다.
- Observer :
상태가 변경되면 다른 객체들에게 연락을 돌릴 수 있게 해준다.
- Decorator :
객체를 감싸서 새로운 행동을 제공한다.
- Factory Method :
생성할 구상 클래스를 서브클래스에서 결정한다.
- Abstract Factory :
클라이언트에서 구상 클래스를 지정하지 않으면서도 일군의 객체를 생성할 수 있도록 해준다.
- Singleton :
오직 하나의 객체만 생성되도록 한다.
- Command :
요청을 객체로 감싼다.
- Adapter :
객체를 감싸서 다른 인터페이스를 제공한다.
- Facade :
일련의 클래스에 대해서 간단한 인터페이스를 제공한다.
- Template Method :
알고리즘의 개별 단계를 구현하는 방법을 서브클래스에서 결정한다.
- Iterator :
컬렉션이 어떻게 구현되었는지 드러내지 않으면서 컬렉션 내에 있는 모든 객체에 대해
반복 작업을 처리할 수 있게 해준다.
- Composite :
클라이언트에서 객체 컬렉션과 개별 객체를 똑같이 다룰 수 있도록 해준다.
- State :
상태를 기반으로 한 행동을 캡슐화한 다음 위임을 통해서 필요한 행동을 선택한다.
- Proxy :
객체를 감싸서 그 객체에 대한 접근을 제어한다.
* 디자인 패턴 분류하기
1) 생성 패턴(Creational pattern) :
객체 인스턴스 생성을 위한 패턴으로, 클라이언트와 그 클라이언트에서 생성해야 할
객체 인스턴스 사이의 연결을 끊어주는 패턴이다.
- Singleton, Factory Method, Abstract Factory
2) 행동 패턴(Behavioral pattern) :
클래스와 객체들이 상호작용하는 방법 및 역할을 분담하는 방법과 관련된 패턴이다.
- Observer, Command, Iterator, State, Strategy, Template Method
3) 구조 패턴(Structural pattern) :
클래스 및 객체들을 구성을 통해서 더 큰 구조로 만들 수 있게 해주는 것과 관련된 패턴이다.
- Adapter, Composite, Decorator, Facade, Proxy
* GoF (Gang of Four)
- 가장 훌륭한 패턴 카탈로그이자 디자인 패턴의 정석인
'Design Patterns : Element of Reusable Object-Oriented Software'를
(한글판 이름은 'GoF 의 디자인 패턴 : Design Patterns') 기술한 4인방 (Gang of Four) 을 가르키는 말이다.
- 에릭 감마(Erich Gamma), 리차드 헬름(Richard Helm), 랠프 존슨(Ralph Johnson),
존 블라사이즈(John Vlissides) 를 가르켜 GoF 라고 한다. 처음으로 패턴 카탈로그를 만드신 분들이다.
'Programming > Design Pattern' 카테고리의 다른 글
Head First : Design Patterns - 제12장 Compound 패턴 (0) | 2014.06.03 |
---|---|
Head First : Design Patterns - 제11장 Proxy 패턴 (2) (0) | 2014.06.02 |
Head First : Design Patterns - 제11장 Proxy 패턴 (1) (0) | 2014.06.01 |
Head First : Design Pattern - 제10장 State 패턴 (0) | 2014.05.30 |
Head First : Design Patterns - 제9장 Iterator 와 Composite 패턴 (0) | 2014.05.29 |
RECENT COMMENT