Tips/디자인 패턴 (Design Pattern)

GoF의 Patterns 분류 (Gang of Four Design Patterns Classified)

dextto™ 2012. 9. 8. 11:37

Creational Patterns

객체를 생성하는 더 나은 방법을 제시

 

Factory Method

객체를 생성하는 interface를 정의

instance를 만들 class의 결정은 subclass가 담당함

class를 instance 화 하는 시점을 subclass 에서 수행하도록 지연시킴

 

Abstract Factory

구체적인 class를 지정하지 않고

관련성 있는 객체의 집합을 생성하거나

서로 독립적인 객체들의 집합을 생성할 수 있는 interface를 제공

 
Builder 
복잡한 인스턴스를 조립.
각 부분에 대한 구현부를 나누어 이를 조립하여 큰 기능을 수행함.

Prototype
클래스 이름을 지정하지 않고 인스턴스를 복사하여 생성.
- 종류가 너무 많아 한 개의 클래스로 할 수 없는 경우
- 클래스로부터 인스턴스를 생성하기 어려운 경우
- 프레임워크와 생성할 인스턴스를 분리하고 싶은 경우

Singleton

class의 instance는 오직 하나가 되도록 보장하고

이 instance에 접근하는 방법을 제공

 

Structural Patterns

객체를 어떻게 같이 합칠 것 인지 제시

 

Facade

subsystem의 interface 집합에 대해 하나의 통합된 interface를 제공

subsystem 사용이 쉽도록 하기 위해 높은 수준의 interface를 사용

 

Proxy

다른 객체로의 접근을 통제하기 위해 해당 객체의 대리자를 제공

 

Adapter

class의 interface를 다른 class가 사용할 수 있는 class로 변환함

호환성이 없는 interface로 연동이 불가능한 class를 개조하여 연동이 가능하게 함

 

Composite

부분, 전체 계층을 표현하기 위해 복합 객체를 tree 구조로 제공

client가 단일 객체와 복합 객체 모두를 동일하게 다룰 수 있도록 함

 

Decorator

객체에 동적으로 책임을 추가할 수 있도록 함

기능의 유연한 확증을 상속이 아닌 방법으로 가능하도록 함

Bridge

기능 계층과 구현 계층을 분리.

Flyweight

객체 생성을 최소화 하여 메모리 낭비를 제거.


Behavioral Patterns

 

객체가 어떻게 상호작용하고 기능을 분산하는지 서술

 

Strategy

알고리즘군이 존재할 경우, 각각의 알고르짐을 별도의 클래스로 캡슐화

알고리즘 교환이 client영향을 주지 않도록함

 

Command

request를 객체로 캡슐화

서로 다른 request를 parameter로 구분

 

Iterator

내부 구조를 노출하지 않고 복합 객체의 원소를 순차적으로 접근하는 방법을 제공

 

Observer

객체 사이의 1:다 관계의 종속성을 정의

한 객체의 상태가 변경될 경우 종속된 다른 객체에 통보하는 방법을 제공

State

Visitor


Template Method

Chain of Responsibility

Mediator

Memento


Interpreter

반응형