SOLID 랑 이것 저것 찾아보다가 디자인 패턴은 어떤 것 들이 있을까 해서 찾아봤습니다..
공부 할게 너무너무 많은 것 일단 종류만 먼저 정리해 볼게요 !!
디자인 패턴(Design Pattern)이란?
개발 중 발생하는 반복적인 문제들에 대한 해결책으로, 많은 개발자가 인정한 모범 사례(Best Practice)입니다. 객체 지향 4대 특성과 SOLID 원칙을 기반으로 합니다.
디자인 패턴의 장점
- 재사용성: 검증된 솔루션을 재사용하여 반복적인 문제 해결
- 가독성: 명확한 구조로 코드를 이해하기 쉬움
- 유지보수성: 모듈화가 용이하여 변경 시 해당 부분만 수정 가능
- 확장성: 기존 코드를 건드리지 않고 새로운 기능 통합 용이
- 안정성: 수많은 검증을 거친 신뢰할 수 있는 방식

🍳 객체 지향과 디자인 패턴의 비유
| 프로그래밍 개념 | 요리 비유 | 설명 |
|---|---|---|
| 객체 지향 4대 원칙 | 요리 도구 | 캡슐화, 상속, 추상화, 다형성 |
| 설계 원칙 (SOLID) | 도구 사용법 | 도구를 올바르게 다루는 방법 |
| 디자인 패턴 | 레시피 | 표준화된 문제 해결 방법 |
GoF의 23가지 디자인 패턴
1. 생성 패턴 (Creational Pattern)
객체 생성에 관련된 패턴으로, 객체의 생성과 조합을 캡슐화해 특정 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공합니다.
| Singleton (싱글톤) |
하나의 인스턴스만 생성되도록 보장하고, 어디서든 접근 가능하게 함 |
| Factory Method (팩토리 메서드) |
객체 생성을 서브 클래스로 미루어 어떤 클래스의 인스턴스를 생성할지 결정 |
| Abstract Factory (추상 팩토리) |
관련된 객체들의 집합을 생성하는 인터페이스를 제공하여 구체적인 생성을 추상화 |
| Builder (빌더) |
복잡한 객체의 생성 과정을 단순화하여 단계적으로 생성 및 조립 |
| Prototype (프로토타입) |
기존 객체를 복제(Clone)하여 새로운 객체를 생성 |
2. 구조 패턴 (Structural Pattern)
클래스나 객체를 조합해 더 큰 구조를 만드는 패턴입니다.
| Adapter (어댑터) |
호환되지 않는 인터페이스를 가진 클래스들을 함께 사용할 수 있도록 래퍼(Wrapper) 제공 |
| Bridge (브릿지) |
추상화와 구현을 분리하여 각각 독립적으로 확장 가능하게 함 |
| Composite (컴포지트) |
개별 객체와 복합 객체를 동일하게 다루며 트리 구조를 구성 |
| Decorator (데코레이터) |
객체에 동적으로 새로운 기능을 추가하여 확장 |
| Facade (퍼사드) |
복잡한 서브시스템을 쉽게 사용할 수 있도록 단순한 통합 인터페이스 제공 |
| Flyweight (플라이웨이트) |
대량의 작은 객체들을 공유하여 메모리 사용 최적화 |
| Proxy (프록시) |
다른 객체에 대한 대리자를 제공하여 접근 제어, 지연 로딩 등을 수행 |
3. 행위 패턴 (Behavioral Pattern)
객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴입니다.
| Observer (옵저버) |
상태 변경 시 의존하는 다른 객체들에게 자동으로 알림 |
| Strategy (전략) |
알고리즘을 정의하고 캡슐화하여 실행 중에 교체 가능하게 함 |
| Command (커맨드) |
요청을 객체로 캡슐화하여 큐 저장, 로깅, 실행 취소 등을 지원 |
| State (상태) |
객체의 내부 상태에 따라 스스로 행동을 변경하도록 함 |
| Chain of Responsibility (책임 연쇄) |
요청을 처리하는 객체들을 체인으로 연결하여 처리할 때까지 넘김 |
| Visitor (방문자) |
객체 구조를 변경하지 않고 새로운 연산을 수행할 수 있게 함 |
| Interpreter (인터프리터) |
언어의 문법을 정의하고 해석기를 제공하여 문제 해결 |
| Memento (메멘토) |
객체의 내부 상태를 저장해 두었다가 나중에 복원 |
| Mediator (중재자) |
객체 간의 복잡한 통신을 캡슐화하여 결합도를 낮춤 |
| Template Method (템플릿 메서드) |
알고리즘의 골격은 상위 클래스에, 구체적 단계는 하위 클래스에 구현 |
| Iterator (이터레이터) |
내부 구조를 노출하지 않고 컬렉션의 요소에 순차적으로 접근 |
갑자기 또 궁금해진 GoF 저만,, 영어 약자 나오면 궁금해지는거 아니겠죠 아래에다가 정리해볼게요 !
디자인 패턴의 기원: GoF(Gang of Four)
우리가 학습하는 디자인 패턴의 표준은 1994년 출간된 책 《Design Patterns: Elements of Reusable Object-Oriented Software》에서 정립되었습니다.
이 책은 소프트웨어 설계의 공통된 문제에 대한 해법과 작명법을 제안하였으며, 공동 저자인 에리히 감마(Erich Gamma), 리처드 헬름(Richard Helm), 랄프 존슨(Ralph Johnson), 존 블리시데스(John Vlissides) 네 명을 가리켜 이 분야의 '4인방(Gang of Four, GoF)'이라 부릅니다.
- 책의 전반부는 패턴의 정의를, 후반부는 실용적인 23가지 패턴을 다룸
- 예제 코드는 객체지향 언어인 C++과 스몰토크(Smalltalk)로 작성됨
- 한국어판은 피어슨 에듀케이션 코리아를 통해 출판됨
참고 및 출처: IT is True:티스토리
'Knowledge > 디자인 패턴' 카테고리의 다른 글
| [OOP] 객체 지향 설계의 5가지 원칙 - S.O.L.I.D (0) | 2026.01.26 |
|---|