GoF(Gang of Four) 디자인 패턴은 소프트웨어 설계에서 자주 발생하는 문제들을 해결하기 위해 제시된 23가지의 디자인 패턴이다.
1. 생성(Creational) 패턴 - 객체 생성 관련
객체 생성 로직을 캡슐화하여 유연하고 재사용 가능하게 만드는 패턴
1) Singleton
- 오직 하나의 인스턴스만 존재하도록 보장
2) Factory Method
- 객체 생성을 서브 클래스에 위임하여, 상위 클래스에서는 어떤 객체가 생성될지 모르게 함
- ex. 인터페이스 기반 객체 생성
3) Abstract Factory
- 관련 있는 객체들을 하나의 팩토리에서 생성
4) Builder
- 복잡한 객체를 단계별로 생성
5) Prototype
- 기존 객체를 복제하여 새 갳체 생성
2. 구조(Structural) 패턴 - 클래스/객체 구성 관련
여러 클래스를 결합해 더 큰 구조를 만들거나, 인터페이스를 변경하는 등의 구조 패턴
6) Adapter
- 호환되지 않는 인터페이스를 맞춰줌 (일명 Wrapper)
7) Bridge
- 구현부와 추상부를 분리하여 독립적으로 확장 가능
8) Composite
- 객체들을 트리 구조로 구성하여 부분-전체 계층 표현
9) Decorator
- 객체에 기능을 추가할 때, 상속 없이 동적으로 부가 기능 추가
10) Facade
- 복잡한 서브시스템을 단순화된 인터페이스로 제공
11) Flyweight
- 메모리 절약을 위해 객체를 공유
12) Proxy
- 실제 객체에 대한 접근 제어(로깅, 캐싱, 보안 등)
3. 행위(Behavioral) 패턴 - 객체간의 상호 작용
책임 분산, 커뮤니케이션 흐름을 다루는 패턴
13) Chain of Responsibility
- 요청을 처리할 수 있는 객체를 체인으로 연결해 순차적으로 처리
14) Command
- 요청을 객체로 캡슐화하여 실행/취소/로그 가능
15) Interpreter
- 언어의 문법을 클래스로 표현하고 해석기 구현
16) Iterator
- 컬렉션의 내부 표현을 노출하지 않고 순회 가능
17) Mediator
- 객체 간의 상호 작용을 중재자에게 위임하여 복잡도 감소
18) Memento
- 객체 상태를 저장하고 복원 가능하게 함 (Undo 기능)
19) Observer
- 한 객체의 상태 변화가 있을 때, 관련된 다른 객체에 자동 통지
20) State
- 객체의 상태에 따라 행동을 변경 (상태 패턴)
21) Strategy
- 알고리즘을 캡슐화하여 동적으로 교체 가능
22) Template Method
- 알고리즘의 골격을 정의하고, 하위 클래스에서 세부 구현
23) Visitor
- 구조는 변경하지 않고, 새로운 연산을 추가
( 참고로, Spring 에서 자주 사용되는 GoF 디자인 패턴은 노란색 색깔로 표시하였다. )
'IT > DesignPattern' 카테고리의 다른 글
[DesignPattern] Singleton 패턴 (0) | 2025.03.16 |
---|---|
[DesignPattern] SAGA 패턴 (1) | 2024.12.10 |
[DesignPattern] CQRS 패턴 (2) | 2024.12.10 |