GOF 패턴
GOF 디자인 패턴 (Gang of Four)
생성 / 구조 / 행위 패턴 23가지
생성 패턴 (Creational)
객체 생성 방식을 추상화
| 패턴 | 목적 |
|---|---|
| Factory Method | 객체 생성을 서브클래스에 위임 |
| Abstract Factory | 관련된 객체군 생성 인터페이스 제공 |
| Singleton | 하나의 인스턴스만 생성 보장 |
| Prototype | 기존 인스턴스를 복제하여 생성 |
| Builder | 복잡한 객체를 단계별로 생성 |
구조 패턴 (Structural)
클래스/객체를 조합해 더 큰 구조 형성
| 패턴 | 목적 |
|---|---|
| Adapter | 호환되지 않는 인터페이스 변환 |
| Composite | 개별/복합 객체를 동일하게 처리 (트리 구조) |
| Bridge | 추상화와 구현을 분리하여 독립적 변경 가능 |
| Decorator | 객체에 기능을 동적으로 추가 |
| Facade | 복잡한 서브시스템을 간단한 인터페이스로 |
| Flyweight | 대량 객체를 공유하여 메모리 절약 |
| Proxy | 객체 접근 제어 / 대리 실행 |
행위 패턴 (Behavioral)
객체 간 상호작용과 책임 분배
| 패턴 | 목적 |
|---|---|
| Template Method | 알고리즘 구조는 상위 클래스, 세부 구현은 하위 클래스 |
| Observer | 상태 변화 시 등록된 객체에 자동 알림 |
| Strategy | 알고리즘을 클래스로 캡슐화하고 동적 교체 |
| Chain of Responsibility | 처리 요청을 순차적으로 전달 |
| Command | 요청을 객체로 캡슐화 (undo/redo 가능) |
| Mediator | 객체 간 중앙 집중식 통신 관리 |
| Memento | 객체 상태 저장/복원 |
| State | 객체 상태에 따라 행동 변경 |
| Visitor | 객체 구조 변경 없이 새로운 동작 추가 |
| Iterator | 컬렉션 내부 구조 노출 없이 순회 |
| Interpreter | 언어 문법 해석/실행 |
자주 쓰이는 패턴 요약
싱글톤: getInstance() 로 하나의 인스턴스만 반환
팩토리: 어떤 객체를 만들지 서브클래스가 결정
옵저버: subject.notify() → 등록된 observer.update() 호출
전략: context.setStrategy(new ConcreteStrategy()) 로 런타임 교체
데코레이터: new LoggingDecorator(new BasicComponent()) 처럼 감싸기