<aside> <img src="/icons/list-indent_lightgray.svg" alt="/icons/list-indent_lightgray.svg" width="40px" />
Table Of Contents
</aside>
프로그램 설계시 자주 발생하는 문제들을 객체 간의 상호 관계를 통해 해결할 수 있도록 정리한 검증된 설계 해법이다. 라이브러리와 프레임워크를 만드는 기초 원리로 활용된다.
디자인 패턴을 배우는 이유
디자인 패턴의 종류
| 분류 | 설명 | 주요 패턴 |
|---|---|---|
| **생성 패턴 | ||
| (Creational Patterns)** | 객체를 생성하는 방법에 관한 패턴 | ・ 싱글톤(Singleton) ⭐⭐⭐ |
| ・ 팩토리(Factory) ⭐⭐⭐ | ||
| ・ 추상 팩토리(Abstract Factory) | ||
| ・ 빌더(Builder) | ||
| ・ 프로토타입(Prototype) | ||
| **구조 패턴 | ||
| (Structural Patterns)** | 객체와 클래스를 조합하여 더 큰 구조를 유연하고 효율적으로 만드는 패턴 | ・ 프록시(Proxy) ⭐⭐⭐ |
| ・ 어댑터(Adapter) | ||
| ・ 브리지(Bridge) | ||
| ・ 복합체(Composite) | ||
| ・ 데코레이터(Decorator) | ||
| ・ 퍼사드(Facade) | ||
| ・ 플라이웨이트(Flyweight) | ||
| **행동 패턴 | ||
| (Behavioral Patterns)** | 객체나 클래스 간의 알고리즘과 책임 분배에 관한 패턴 | ・ 이터레이터(Iterator) ⭐⭐⭐ |
| ・ 옵저버(Observer) ⭐⭐⭐ | ||
| ・ 전략(Strategy) ⭐⭐⭐ | ||
| ・ 책임 연쇄(Chain of Responsibility) | ||
| ・ 커맨드(Command) | ||
| ・ 중재자(Mediator) | ||
| ・ 메멘토(Memento) | ||
| ・ 상태(State) | ||
| ・ 템플릿 메서드(Template Method) | ||
| ・ 비지터(Visitor) |
이외에도 수천가지 디자인패턴이 있다. (MVC, Flux 패턴 등)
라이브러리(Library)
공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것으로, 개발자가 필요한 부분만 선택해서 사용할 수 있다.
특징