728x90
디자인 패턴(Design Pattern)이란 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 또 발생했을 때 재사용할 수 있는 훌륭한 해결책이다.
패턴은 비슷하거나 동일한 양식 또는 유형들이 반복되어 나타난다는 의미이며, 문제와 해결책도 동일한 유형이나 양식을 통해 쉽게 찾을 수 있다.
디자인 패턴의 구조는 context, problem, solution 3개의 필수적인 요소로 구성된다.
- context : 문제가 발생하는 여러 상황을 기술한다. 패턴이 적용될 수 있는 상황을 나타낸다.
- problem : 패턴이 적용되어 해결될 필요가 있는 여러 디자인 이슈들을 기술한다. 이때 여러 제약 사항과 영향력도 문제 해결을 위해 고려해야 한다.
- solution : 문제를 해결하도록 설계를 구성하는 요소들과 그 요소들 사이의 관계, 책임, 협력 관계를 기술한다.
GoF 패턴은 이 분야의 4인방(Gang of Four, GoF)으로 불리는 에리히 감마(Erich Gamma), 리처드 헬름(Richard Helm), 랄프 존슨(Ralph Johnson), 존 블리시데스(John Vlissides)가 같이 고안한 디자인 패턴이다.
GoF 디자인 패턴은 생성 패턴, 구조 패턴, 행위 패턴 총 3가지로 분류할 수 있다.
생성 패턴 | 구조 패턴 | 행위 패턴 |
Abstract Factory | Adapter | Chain of Responsibility |
Builder | Bridge | Command |
Factory Method | Composite | Interpreter |
Prototype | Decorator | Iterator |
Singleton | Facade | Mediator |
Flyweight | Memento | |
Proxy | Observer | |
State | ||
Strategy | ||
Template Method | ||
Visitor |
이 중 자주 사용하는 10가지 패턴만 간단히 설명하겠다.
패턴 분류 | 패턴 이름 | 패턴 설명 |
생성 패턴 | Abstract Factory | 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴 |
Factory Method | 객체 생성 처리를 서브 클래스로 분리해 처리하도록 캡슐화 하는 패턴 | |
Singleton | 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴 | |
구조 패턴 | Composite | 여러 개의 객체들로 구성된 복합 객체와 단일 객체를 클라이언트에서 구별 없이 다루게 해주는 패턴 |
Decorator | 객체의 결합을 통해 기능을 동적으로 유연하게 확장할 수 있게 해주는 패턴 | |
행위 패턴 | Observer | 한 객체의 상태 변화에 따라 다른 객체의 상태도 연동되도록 일대다 객체 의존 관계를 구성하는 패턴 |
State | 객체의 상태에 따라 객체의 행위 내용을 변경해주는 패턴 | |
Strategy | 행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 패턴 | |
Template Method | 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴 | |
Command | 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴 |
출처 : JAVA 객체 지향 디자인 패턴 / 정인상, 채홍석
728x90
'Design Pattern' 카테고리의 다른 글
[Design Pattern] 커맨드(Command) 패턴이란? (0) | 2020.05.08 |
---|---|
[Design Pattern] 옵저버(Observer) 패턴이란? (0) | 2020.05.08 |
[Design Patten] 데코레이터(Decorator) 패턴이란? (0) | 2020.05.08 |