2023년 12월 29일
디자인 패턴 (Design Pattern)
1. 디자인 패턴의 개념 및 필요성
개념 | 특징 |
---|---|
소프트웨어 설계 시 특정 문맥에서 공통적으로 발생하는 문제 해결을 위해 재사용 가능한 해결책 | – 객체지향 설계 – 공통된 설계 문서 – 의사소통 도구로 활용 |
- 디자인 패턴은 프로그램 언어로 즉시 사용 가능한 완성된 디자인은 아니며, 상황에 맞게 사용될 수 있는 문제 해결에 대한 서술이나 템플릿을 의미
2. 디자인 패턴의 구조 및 구성요소
구분 | 설명 | |
---|---|---|
구조 | ||
구성 요소 | 컨텍스트 (Context) | – 문제 발생의 요소를 제공하는 상황, 환경 요소 – 패턴을 적용할 수 있는 상황, 환경 |
문제 (Problem) | – 패턴이 적용되어 해결이 필요한 이슈 – 여러 제약 사항, 영향력을 포함 | |
해결 (Solution) | – 문제 해결을 위한 요소 및 관계 기술 – 문제 해결을 위한 다양한 템플릿 |
- 컨텍스트, 문제, 해결이 필수 구성요소로 구성이며, 대표적으로 GoF(Gang of Four)가 정의한 디자인 패턴은 패턴을 구체화/체계화하여 생성 패턴, 구조 패턴, 행동 패턴의 23 개 패턴으로 정리하여 SW 개발 영역에서 문제 해결
3. GoF가 정의한 디자인 패턴의 기능과 종류
(1) 디자인 패턴의 기능
디자인 패턴 | 기능 |
---|---|
생성 패턴 (Creational Pattern) | 인스턴스를 만드는 절차를 추상화하는 패턴으로, 사용 클래스 정보를 캡슐화 시키고, 생성에 관련된 결정을 통해 유연성 제공 |
구조 패턴 (Structural Pattern) | 더 큰 구조를 형성 위해 클래스와 객체 합성 방법을 제공하는 패턴으로, 객체를 조직화하는 일반적인 방식 제시하고 상속 기법 이용하여 인터페이스 구현 |
행동 패턴 (Behavioral Pattern) | 객체들을 어떻게 연결시킬 것인지에 더 중점을 두는 패턴으로, 문제 해결의 알고리즘을 객체에 정의하는 것에 초점을 두고 객체행위를 조직화, 관리, 연합하고 객체나 클래스 연동에 대한 유형 제시 |
(2) 디자인 패턴의 종류
구분 | 생성 패턴 (5개) | 구조 패턴 (7개) | 행동 패턴 (11개) |
---|---|---|---|
클래스 | – Factory method | – Adaptor (Class) | – Interpreter – Template method |
객체 | – Abstract Factory – Builder – Prototype – Singleton | – Adaptor (Object) – Bridge – Composite – Decorator – Façade – Flyweight – Proxy | – Chain of Responsibility – Command – Iterator – Mediator – Memento – Observer – State – Strategy – Visitor |
- 디자인 패턴을 제대로 이해하고, 패턴 사이의 관계를 확실히 파악하여 효과적인 소프트웨어 설계 필요
[참고]
- 프로텍미디어, GoF의 디자인 패턴 :재사용성을 지닌 객체지향 소프트웨어의 핵심요소