패턴은 목적(purpose), 범위(scope)로 분류할 수 있으며,
패턴은 생성, 구조, 행동 중의 한 가지 목적을 갖는다.
- 생성(creational) 패턴 - 객체의 생성 과정에 관여하는 패턴
- 구조(structural) 패턴 - 클래스나 객체의 합성에 관한 패턴
- 행동(behavioral) 패턴 - 클래스나 객체들이 상호작용하는 방법과 책임을 분산하는 방법을 정의하는 패턴
범위는 패턴을 클래스에 적용하는지 아니면 객체에 적용하는 지를 구분하는 것입니다
- 클래스 패턴 - 클래스와 서브 클래스 간의 관련성을 다루는 패턴, 관련성은 주로 상속, 컴파일 타임에 정적으로 결정됨
- 객체 패턴 - 객체 관련성을 다루는 패턴으로서, 런타임에 변경할 수 있으며 더 동적인 성격을 가집니다.
구분목적
구분 | 목적 | |||
생성 클라이언트와 클라이언트가 생성해야 하는 인스턴스 사이의 연결을 끊음 |
구조 클래스와 객체를 더 큰 구조로 만들 수 있게 구성을 사용 |
행동 클래스와 객체들이 상호 작용하는 방법과 역할을 분담하는 방법을 다룸 |
||
대상 | 클래스 상속 컴파일 |
Factory Method - 팩토리 메서드 | Adapter - 어댑터(class) | Interpreter - 인터프리터 Template Method - 템플릿 메서드 |
서브클래스가 단일 객체를 생성 | 어댑터를 이용해 동일한 인터페이스로 클래스를 제공 | 상속을 이용해 알고리즘과 제어 흐름을 관리 | ||
객체 구성 동적 런타임 |
Abstract Factory - 추상 팩토리 Builder - 빌더 Prototype - 프로토타입 Singleton - 싱글톤 |
Bridge - 브릿지 Composite - 컴포짓 Decorator - 데커레이터 Facade - 퍼사드 Flyweight - 플라이웨이 Proxy - 프록시 |
Chain of Responsibility 책임 연쇄 Command - 커맨드 Iterator - 이터레이터 Mediator - 중재자 Memento - 메멘토 Observer - 옵저버 State - 상태 Strategy - 전략 Visitor - 비지터 |
|
객체의 생성 | 객체를 더 큰 구조로 만들 수 있도록 구성을 사용 | 상호작용하는 방법과 역할을 분리 |
패턴의 대안
Prototype(프로토타입 패턴)은 Abstract Factory(추상 팩토리 패턴)의 대안이다.
구조가유사한 패턴
Composite(컴포짓 패턴)과 Decorator(데커레이터 패턴)는 의도는 다르지만 구조는 비슷하다.
패턴의 조합
Composite(컴포짓 패턴)은 Iterator(이터레이터 패턴)와 Visitor(비지터 패턴)를 함께 사용해야 할 때가 많다.
디자인 패턴을 조직하는 다른 방법은 패턴간의 참조 관계에 따라 관리하는 것
'프로그래밍 > OOP_Pattern_TDD' 카테고리의 다른 글
디자인패턴 빌더 패턴(Builder Pattern) (0) | 2022.07.29 |
---|---|
디자인패턴 Bridge Pattern (브릿지 패턴) (0) | 2022.07.29 |
디자인패턴 카탈로그 (0) | 2022.07.28 |
디자인패턴 - 팩토리 메소드 vs 추상 팩토리 (0) | 2022.07.27 |
OOP - SOLID 원칙 5.의존관계 역전 원칙, Dependency Inversion Principle (0) | 2022.07.26 |