GoF Design Pattern

Understanding GoF's Design Pattern

Featured image

Design Pattern

[휠 그림]

“Don’t reinvent the wheel.”

제가 살면서 처음으로 리팩토링(Refactoring)을 시작할 때 전해들은 유명한 말입니다.

객체 지향 프로그래밍(Object-Oriented Programming)은 구조적으로 잘 설계를 한다면, 결합도(Coupling)를 낮게, 응집도(Cohesion)는 높게 만들 수 있으니 처음부터 잘 생각해서 프로그램을 설계하라는 말을 딱 한마디로 얘기하면 휠을 재발명 하지마라 가 됩니다.

오늘 내용의 디자인 패턴(Design Pattern)은 객체 지향 프로그래밍에서 쓰면 좋은 품질을 제공하는 템플릿을 얘기할 수 있습니다. 일부러 자신의 지식을 자랑하고자 복잡하게 설계한 오버 엔지니어링과 빠른 구현을 위해 불 필요한 반복이 난무하는 언더 엔지니어링 사이의 적절한 수위를 맞춰주기도 합니다.

Features


[고민하는 사진]

디자인 패턴은 설계 과정을 포함하여 유지보수까지 소프트웨어 엔지니어간 소통을 원활하게 해줍니다. 어떤 문제(Problem)가 발생하는 여러 상황(Context)를 어떻게 해결(Solution)할 수 있을 지에 대해 디자인 패턴의 무슨 모델을 쓰면 된다로 간단히 회의를 끝낼 수 있죠.

[Context, Problem, Solution 다이어그램]

디자인 패턴은 정말로 많은 방법들이 있습니다. 그래서 오늘 얘기할 내용은 Erich Gamma, Richard Helm, Ralph Johnson, Hohn Vissides(GoF: Gang of Fout) 가 정의한 디자인 패턴을 얘기합니다. GoF 디자인 패턴에는 크게 세 가지로 나뉩니다.

생성 패턴(Creational Pattern) 구조 패턴(Structural Pattern) 행위 패턴(Behavioral Pattern)
- 추상 팩토리(Abstract Factroy)
- 빌더(Builder)
- 팩토리 메소드(Factory Methods)
- 프로토 타입(Prototype)
- 싱글톤(Singleton)
- 어댑터(Adapter)
- 브릿지(Bridge)
- 컴퍼지트(Composite)
- 데코레이터(Decorator)
- 퍼사드(Facade)
- 플라이웨이트(Flyweight)
- 프록시(Proxy)
- 책임 사슬(Chain of Responsibility)
- 커맨드(Command)
- 인터프리터(Interpreter)
- 반복자(Iterator)
- 미디에이터(Mediator)
- 메멘토(Memento)
- 옵저버(Observer)
- 상태(State)
- 전략(Strategy)
- 템플릿 메소드(Templete method)
- 방문자(Visitor)

아래 포스팅 이미지 출처는 모두 GoF Design Pattern Reference Card(Jason S. McDonald)입니다.

생성패턴(Creational Pattern)

구조패턴(Structural Pattern)

행위패턴(Behavioral Pattern)