Design Pattern

[Design Pattern] 디자인 패턴의 이해와 GoF 패턴

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