
객체를 어떻게 생성할지를 유연하게 설계하는 패턴들
| 패턴 이름 | 설명 |
|---|---|
| Singleton | 단 하나의 인스턴스만 생성하여 전역에서 공유함 |
| Factory Method | 객체 생성 로직을 서브클래스로 위임함 |
| Abstract Factory | 관련된 객체들을 통일된 방식으로 생성할 수 있도록 함 |
| Builder | 복잡한 객체를 단계별로 생성하며 가독성을 높임 |
| Prototype | 기존 객체를 복제하여 새로운 객체를 생성함 (얕은/깊은 복사 등) |
객체들을 어떤 식으로 연결해서 사용할지를 설계하는 패턴들
| 패턴 이름 | 설명 |
|---|---|
| Adapter | 서로 다른 인터페이스를 가진 클래스를 연결함 |
| Decorator | 기존 객체에 기능을 동적으로 추가함 |
| Facade | 복잡한 서브시스템을 단순한 인터페이스로 감싸 제공함 |
| Composite | 트리 구조처럼 계층적으로 구성된 객체를 통일된 방식으로 처리 |
| Bridge | 구현과 추상을 분리하여 독립적으로 확장 가능하게 설계함 |
| Proxy | 접근 제어나 성능 향상을 위해 객체의 대리인을 사용함 |
| Flyweight | 동일한 객체를 공유하여 메모리 사용을 줄임 (경량 객체) |
객체들 사이의 책임, 소통, 동작 흐름을 효과적으로 관리하는 패턴들
| 패턴 이름 | 설명 |
|---|---|
| Strategy | 알고리즘을 객체로 캡슐화해 유연하게 교체 가능하게 함 |
| Observer | 특정 객체의 상태 변화에 따라 연결된 객체에 자동 알림 전달 |
| State | 객체의 상태에 따라 다른 행동을 수행하도록 설계함 |
| Template Method | 알고리즘의 뼈대를 정의하고, 세부 단계는 서브클래스가 구현함 |
| Command | 요청(명령)을 객체로 캡슐화하고 실행/취소 등을 분리함 |
| Mediator | 객체 간 복잡한 연결을 하나의 중재자로 정리함 |
| Iterator | 컬렉션 내부 구조를 노출하지 않고 순회할 수 있도록 함 |
| Chain of Responsibility | 요청을 여러 객체에게 순차적으로 전달하여 처리 가능성 탐색 |
| Visitor | 객체 구조 변경 없이 새로운 연산을 추가할 수 있음 |
| Memento | 객체의 상태를 저장하고 복원하는 기능을 제공함 |
| Interpreter | 문법 규칙을 클래스로 표현해 언어 해석 기능 구현 |