2 디자인 패턴 (GoF 23)
GoF 23개 = 생성 5 + 구조 7 + 행위 11. 목적별로 분류를 외우자.
핵심 생성(Creational) 5 · 구조(Structural) 7 · 행위(Behavioral) 11 = 총 23개. 실기는 "패턴명 ↔ 설명" 매칭이 단골.
생성 패턴 (5) — 객체 생성 방식
| 패턴 | 목적 |
|---|---|
| 추상 팩토리(Abstract Factory) | 구체 클래스를 지정하지 않고 관련 객체군을 생성. |
| 빌더(Builder) | 복합 객체의 생성 과정과 표현을 분리해 단계적으로 생성. |
| 팩토리 메서드(Factory Method) | 객체 생성 인터페이스만 정의, 인스턴스 결정은 서브클래스가. |
| 프로토타입(Prototype) | 원본 객체를 복제(clone)하여 새 객체 생성. |
| 싱글톤(Singleton) | 인스턴스를 단 하나만 생성하고 전역 접근점 제공. |
구조 패턴 (7) — 클래스·객체 결합
| 패턴 | 목적 |
|---|---|
| 어댑터(Adapter) | 호환되지 않는 인터페이스를 변환해 연결. |
| 브리지(Bridge) | 추상화와 구현을 분리해 독립적으로 확장. |
| 컴포지트(Composite) | 부분-전체를 트리로 구성, 개별·복합을 동일하게 취급. |
| 데코레이터(Decorator) | 객체에 동적으로 기능(책임)을 추가. |
| 퍼사드(Facade) | 서브시스템에 대한 통합 상위 인터페이스 제공. |
| 플라이웨이트(Flyweight) | 다수 객체를 공유해 메모리 사용 절감. |
| 프록시(Proxy) | 실제 객체 접근을 제어하는 대리 객체. |
행위 패턴 (11) — 객체 간 상호작용·책임
| 패턴 | 목적 |
|---|---|
| 책임 연쇄(Chain of Responsibility) | 요청 처리 객체를 사슬로 연결, 차례로 처리 기회 부여. |
| 커맨드(Command) | 요청을 객체로 캡슐화해 저장·취소·재실행. |
| 인터프리터(Interpreter) | 언어 문법을 클래스로 표현하고 해석. |
| 반복자(Iterator) | 내부 구조 노출 없이 집합 원소를 순차 접근. |
| 중재자(Mediator) | 객체 간 상호작용을 중재자에 집중시켜 결합도 감소. |
| 메멘토(Memento) | 객체의 내부 상태를 저장·복원(undo). |
| 옵서버(Observer) | 상태 변화를 의존 객체들에 자동 통지. |
| 상태(State) | 상태에 따라 객체의 행위를 변경. |
| 전략(Strategy) | 알고리즘군을 캡슐화해 교체 가능하게. |
| 템플릿 메서드(Template Method) | 알고리즘 골격 정의, 세부 단계는 서브클래스가. |
| 방문자(Visitor) | 구조 변경 없이 새 연산을 별도 객체로 추가. |
암기팁 분류 개수 5 / 7 / 11 = 23. "생성이 제일 적고(5), 행위가 제일 많다(11)".
함정주의 아키텍처 패턴(MVC, 레이어, 파이프-필터, 클라이언트-서버 등)과 혼동 주의. GoF 디자인 패턴은 클래스·객체 수준의 설계 패턴이다.
✅ 자가점검
Q1. GoF 디자인 패턴의 3분류와 각 개수는?
생성(Creational) 5 · 구조(Structural) 7 · 행위(Behavioral) 11 = 총 23개. 생성이 가장 적고 행위가 가장 많다.