본문 바로가기

programmer '프로그래머'

디자인 패턴 관계도 'design pattern'

디자인 패턴 간의 관계를 시각적으로 이해하면 패턴이 수행하는 작업과 서로 상호 작용하는 방식을 이해하는 도움이 됩니다. 디자인 패턴 관계는 패턴이 함께 작동하는 방식이나 어떤 패턴이 다른 패턴을 대체하거나 확장하는지 이해하는 도움이 됩니다. 일반적인 디자인 패턴 다이어그램에는 다음 요소가 포함됩니다.

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