디자인 패턴 간의 관계를 시각적으로 이해하면 각 패턴이 수행하는 작업과 서로 상호 작용하는 방식을 이해하는 데 도움이 됩니다. 디자인 패턴 관계는 패턴이 함께 작동하는 방식이나 어떤 패턴이 다른 패턴을 대체하거나 확장하는지 이해하는 데 도움이 됩니다. 일반적인 디자인 패턴 다이어그램에는 다음 요소가 포함됩니다.
1. 생성 패턴 (Creational Patterns)
- 싱글턴 패턴 (Singleton Pattern)
- 특정 클래스의 인스턴스가 하나만 존재하도록 보장.
- 다른 패턴에서 전역적으로 접근 가능한 객체가 필요할 때 사용.
- 팩토리 메서드 패턴 (Factory Method Pattern)
- 객체 생성 로직을 서브클래스로 분리.
- 추상 팩토리 패턴에서 사용.
- 추상 팩토리 패턴 (Abstract Factory Pattern)
- 관련 객체들의 패밀리를 생성하기 위한 인터페이스 제공.
- 팩토리 메서드 패턴과 빌더 패턴과 연계.
- 빌더 패턴 (Builder Pattern)
- 복합 객체를 단계별로 생성.
- 복잡한 객체의 생성 로직을 단순화.
- 프로토타입 패턴 (Prototype Pattern)
- 객체를 복사하여 새로운 객체를 생성.
- 객체의 상태를 유지한 채 복사본 생성.
2. 구조 패턴 (Structural Patterns)
- 어댑터 패턴 (Adapter Pattern)
- 인터페이스 호환성을 위해 다른 인터페이스를 가진 클래스를 감싸줌.
- 파사드 패턴과 함께 사용될 수 있음.
- 브리지 패턴 (Bridge Pattern)
- 구현과 인터페이스를 분리하여 독립적으로 변경 가능.
- 어댑터 패턴과 유사하지만, 목적이 다름.
- 컴포지트 패턴 (Composite Pattern)
- 객체들을 트리 구조로 구성하여 부분-전체 계층을 표현.
- 반복자 패턴과 함께 사용될 수 있음.
- 데코레이터 패턴 (Decorator Pattern)
- 객체에 추가 기능을 동적으로 추가.
- 컴포지트 패턴과 유사하지만, 단일 객체를 감쌈.
- 파사드 패턴 (Facade Pattern)
- 복잡한 서브시스템에 대한 간단한 인터페이스 제공.
- 어댑터 패턴과 연계 가능.
- 플라이웨이트 패턴 (Flyweight Pattern)
- 다수의 작은 객체들을 공유하여 메모리 절약.
- 동일한 객체를 여러 곳에서 사용할 때 유용.
- 프록시 패턴 (Proxy Pattern)
- 다른 객체에 대한 접근을 제어.
- 리모트 프록시, 가상 프록시 등 다양한 형태 존재.
3. 행위 패턴 (Behavioral Patterns)
- 책임 연쇄 패턴 (Chain of Responsibility Pattern)
- 요청을 처리할 수 있는 기회를 객체 체인에 제공.
- 다양한 처리기들이 연계되어 사용될 수 있음.
- 커맨드 패턴 (Command Pattern)
- 요청을 캡슐화하여 실행, 취소 등의 작업을 처리.
- 메멘토 패턴과 함께 사용될 수 있음.
- 인터프리터 패턴 (Interpreter Pattern)
- 언어의 문법을 정의하고 해석.
- 복잡한 문법 구조의 해석에 사용.
- 반복자 패턴 (Iterator Pattern)
- 집합체 요소에 접근하는 방법을 제공.
- 컬렉션 프레임워크에서 주로 사용.
- 중재자 패턴 (Mediator Pattern)
- 객체들 간의 상호작용을 조정.
- 객체들이 서로 직접 통신하지 않고, 중재자를 통해 통신.
- 메멘토 패턴 (Memento Pattern)
- 객체 상태를 저장하고 복원.
- 커맨드 패턴과 연계 가능.
- 옵저버 패턴 (Observer Pattern)
- 객체 상태 변화를 관찰하고 반응.
- MVC(Model-View-Controller) 아키텍처에서 주로 사용.
- 상태 패턴 (State Pattern)
- 객체의 상태에 따라 행동을 변경.
- 상태 전환을 명확하게 표현.
- 전략 패턴 (Strategy Pattern)
- 알고리즘을 캡슐화하여 동적으로 교체.
- 여러 알고리즘을 정의하고 필요 시 교체 가능.
- 템플릿 메서드 패턴 (Template Method Pattern)
- 알고리즘의 골격을 정의하고 세부 사항은 서브클래스에서 구현.
- 코드 재사용성을 높임.
- 방문자 패턴 (Visitor Pattern)
- 객체 구조를 변경하지 않고 새로운 기능을 추가.
- 객체 구조와 행동을 분리.
+----------------------------------+
| Creational Patterns |
+----------------------------------+
| Singleton, Factory Method, |
| Abstract Factory, Builder, |
| Prototype |
+----------------------------------+
| | |
V V V
+----------------------------------+
| Structural Patterns |
+----------------------------------+
| Adapter, Bridge, Composite, |
| Decorator, Facade, Flyweight, |
| Proxy |
+----------------------------------+
| | |
V V V
+----------------------------------+
| Behavioral Patterns |
+----------------------------------+
| Chain of Responsibility, |
| Command, Interpreter, |
| Iterator, Mediator, Memento, |
| Observer, State, Strategy, |
| Template Method, Visitor |
+----------------------------------+
이 관계도는 디자인 패턴들이 서로 어떻게 연관되어 있는지를 간략히 보여줍니다. 패턴들은 종종 다른 패턴들과 함께 사용되며, 하나의 패턴이 다른 패턴을 확장하거나 구현하는 데 도움을 줄 수 있습니다. 패턴의 선택과 사용은 문제의 특성과 설계 목표에 따라 다를 수 있습니다.
'programmer '프로그래머'' 카테고리의 다른 글
GitKraken 효율성 (0) | 2024.08.05 |
---|---|
label 레이블 (0) | 2024.07.30 |
UI요소 (0) | 2024.07.29 |
NSLayoutConstraint 정의 (0) | 2024.07.26 |
@objc 정의 (0) | 2024.07.25 |