본문 바로가기
OOP

[OOP] 디자인 패턴의 유형

by ifhead 2022. 8. 20.
반응형

디자인 패턴

디자인패턴이란 소프트웨어를 디자인하면서 반복적으로 발생하는 문제를 해결하는 재사용 가능한 해결책을 의미합니다.
논문 <Using Pattern Languages for Object-Oriented Programs (1987)>을 통해 제안되었습니다.
이후 23개의 패턴을 수록한 책 <GoF(Gang of Fours)의 디자인 패턴>으로 인해 보편화되었습니다.
GoF : 에리히 감마, 리차드 헬름, 랄프 존슨, 존 블리시디스

디자인 패턴을 사용하려면 알아야 합니다

컨텍스트 (context)

  • 문제가 발생하는 여러 상황을 가리킵니다.
  • 패턴이 적용될 수 있는 상황을 가리킵니다.
  • 패턴이 유용하지 못한 상황도 존재합니다.

문제 (problem)

  • 패턴이 적용되어 해결될 필요가 있는 여러 디자인 이슈입니다.
  • 이때 여러 제약 사항과 영향력도 문제 해결을 위해 고려해야 합니다.

해결 (solution)

  • 해결은 반드시 구체적인 구현 방법이나 언어에 의존적이지 않습니다.
  • 다양한 상황에 적용할 수 있는 템플릿입니다.

GoF 디자인 패턴의 유형

GoF(Gang of Four)에서는 23가지 디자인 패턴을 3가지 유형으로 분류합니다.

GoF 디자인 패턴의 3가지 유형

1. 생성(Creational) 패턴
2. 구조(Structural) 패턴
3. 행위(Behavioral) 패턴

  목적
생성 Creational 구조 Structural 행위 Behavioral







팩토리 메서드 Factory Method 적응자 Adaptor (Class) 해석자 Interpreter
템플릿 메서드 Template Method

추상 팩토리 Abstract Factory
빌더 Builder
원형 Prototype
단일체 Singleton
적응자 Adaptor (Object)
가교 Bridge
복합체 Composite
장식자 Decorator
퍼사드 Facade
플라이급 Fly Weight
프록시 Proxy
책임 연쇄 Chain of Responsibility
명령 Command
해석자 Interpreter
중재자 Mediator
메멘토 Memento
감시자 Observer
상태 State
전략 Strategy
방문자 Visitor


패턴을 분류하는 기준은 두 가지입니다.

첫 번째 분류 기준 : 목적 Purpose

패턴이 무엇을 하는지 정의합니다.
패턴은 생성, 구조, 행동 중 한 가지 목적을 가집니다.

생성 패턴

객체의 생성 과정에 관여

구조 패턴

클래스나 객체의 합성하는 방법

행동 패턴

클래스, 객체들이 상호작용하는 방법과 책임을 분산하는 방법

두 번째 분류 기준 : 범위 Scope

패턴을 클래스에 적용하는지 아니면 객체에 적용하는지 구분합니다.

클래스 패턴

클래스와 서브클래스 간의 관련성을 다룹니다. 관련성은 주로 상속입니다. 이는 컴파일 타임에 결정됩니다.

객체 패턴

객체 패턴은 객체 관련성을 다루는 패턴입니다. 런타임에 변경할 수 있고 동적입니다.



반응형

댓글