생성(Creational) 패턴 구조(Structural) 패턴 행위(Behavioral) 패턴

 

- 팩토리

- 추상 팩토리

- 싱글턴

- 프로토타입

- 빌더

 

 

 

- 어댑터

- 브리지

- 컴포지트

- 데코레이터

- 퍼사드

- 플라이웨이트

- 프록시

 

 

 

- 책임 연쇄

- 커맨드

- 인터프리터

- 이터레이터

- 미디에이터

- 메멘토

- 옵저버

- 스테이트

- 스트래티지

- 템플릿 메소드

- 비지터

 

 

- 팩토리 패턴 (Factory Pattern)

   생성할 구상 클래스를 서브 클래스에서 결정함.

 

- 추상 팩토리 패턴 (AbstractFactory Pattern)

   클라이언트에서 구상 클래스를 지정하지 않으면서도 일군의 객체를 생성할 수 있도록 함.

 

- 싱글턴 패턴 (Singleton Pattern)

   딱 한 객체만 생성되도록 함.

 

- 프로토타입 패턴 (Prototype Pattern)

   어떤 클래스의 인스턴스를 만드는 것이 자원 / 시간을 많이 잡아먹거나 복잡할 때

 

- 빌더 패턴 (Builder Pattern)

   제품을 여러 단계로 나눠서 만들 수 있도록 제품 생산 단계들을 캡슐화 할 때.

 

 

- 어댑터 패턴 (Adaptor Pattern)

   객체를 감싸서 다른 인터페이스를 제공함.

 

- 브리지 패턴 (Bridge Pattern)

   구현 뿐만 아니라 추상화된 부분까지 변경시켜야 할 때.

 

- 컴포지트 패턴 (Composite Pattern)

   클라이언트에서 객체 컬렉션과 개발 객체를 똑같이 다룰 수 있도록 함.

 

- 데코레이터 패턴 (Decorator Pattern)

   객체를 감싸서 새로운 행동을 제공함.

 

- 퍼사드 패턴 (Facade Pattern)

   일련의 클래스에 대해서 간단한 인터페이스를 제공함.

 

- 플라이웨이트 패턴 (Flyweight Pattern)

   어떤 클래스의 인스턴스 한 개만 가지고 여러 개의 '가상 인스턴스'를 제공하고 싶을 때.

 

- 프록시 패턴 (Proxy Pattern)

   객체를 감싸서 그 객체에 대한 접근을 제어함.

 

 

- 책임 연쇄 패턴 (Chain of Responsibility Pattern)

   한 요청을 두 개 이상의 객체에서 처리하고 싶을 때.

 

- 커맨드 패턴 (Command Pattern)

   요청을 객체로 감쌈.

 

- 인터프리터 패턴 (Interpreter Pattern)

   어떤 언어에 대한 인터프리터를 만들 때.

 

- 이터레이터 패턴 (Iterator Pattern)

   컬렉션이 어떤식으로 구현되었는지 드러내진 않으면서도 컬렉션 내에 있는 모든 객체에 대해 반복 작업을 처리할 수 있게 함.

 

- 미디에이터 패턴 (Mediator Pattern)

   서로 관련된 객체 사이의 복잡한 통신과 제어를 한 곳으로 집중시키고자 할 때.

 

- 메멘토 패턴 (Memento Pattern)

   객체를 이전의 상태로 복구시켜야 할 때.

 

- 옵저버 패턴 (Observer Pattern)

   상태가 변경되면 다른 객체들한테 연락을 돌릴 수 있게함.

 

- 스테이트 패턴 (State Pattern)

   알고리즘의 개별 단계를 구현하는 방법을 서브클래스에서 결정함.

 

- 스트래티지 패턴 (Strategy Pattern)

   교환 가능한 행동을 캡슐화하고 위임을 통해서 어떤 행동을 사용할지 결정함.

 

- 템플릿 메소드 패턴 (Template Method Pattern)

   알고리즘의 개별 단계를 구현하는 방법을 서브클래스에서 결정함.

 

- 비지터 패턴 (Visitor Pattern)

   다양한 객체에 새로운 기능을 추가해야 하는데 캡슐화가 별로 중요하지 않을 때