생성
: 객체 인스턴스 생성에 관여, 클래스 정의와 객체 생성 방식을 구조화, 캡슐화를 수행하는 패턴
구조
: 더 큰 구조 형성 목적으로 클래스나 객체의 조합을 다루는 패턴
행위
: 클래스나 객체들이 상호작용하는 방법과 역할분담을 다루는 패턴
Builder
: 생성과 표기를 분리해서 복잡한 객체를 생성
Prototype
: 기존 객체를 복제함으로써 객체를 생성
Factory Method
: 생성할 객체의 클래스를 국한하지 않고 객체를 생성
Abstract Factory
: 동일한 주제의 다른 팩토리를 묶음
Singleton
: 한 클래스에 한 객체만 존재하도록 제한
Bridge
: 구현뿐만 아니라, 추상화된 부분까지 변경해야 하는 경우 활용
Decorator
: 객체의 결합을 통해 기능을 동적으로 유연하게 확장
Facade
: 통합된 인터페이스 제공
Flyweight
: 여러 개의 '가상 인스턴스'를 제공하여 메모리 절감
Proxy
: 특정 객체로의 접근을 제어하기 위한 용도로 사용
Composite
: 복합 객체와 단일 객체를 동일하게 취급
Adapter
: 인터페이스가 호환되지 않는 클래스들을 함께 이용할 수 있도록 타 클래스의 인터페이스를 기존 인터페이스에 덧씌움
Mediator
: 상호작용의 유연한 변경을 지원
Interpreter
: 문법 자체를 캡슐화하여 사용
Iterator
: 내부구조를 노출하지 않고, 복잡 객체의 원소를 순차적으로 접근 가능하게 해주는 행위 패턴
Template Method
: 상위 작업의 구조를 바꾸지 않으면서 서브 클래스로 작업의 일부분을 수행
Observer
: 객체의 상태 변화에 따라 다른 객체의 상태도 연동, 일대다 의존
State
: 객체의 상태에 따라 행위 내용을 변경
Visitor
: 특정 구조를 이루는 복합 객체의 원소 특성에 따라 동작을 수행할 수 있도록 지원하는 행위
Command
: 요구사항을 객체로 캡슐화
Strategy
: 행위 객체를 클래스로 캡슐화해 동적으로 행위를 자유롭게 변환
Memento
: 객체를 이전 상태로 복구시켜야 하는 경우, '작업취소(Undo)' 요청 가능
Chain of Responsibility
: 한 요청을 2개 이상의 객체에서 처리