Definition
중재자 패턴(Mediator Pattern)은 모든 클래스간의 복잡한 로직을 캡슐화하여 하나의 클래스에 위임하여 처리하는 패턴이다.
Behavioral Patterns
Situation
- GUI 어플리케이션에 효과적(라디오 버튼, 텍스트 필드, 버튼은 각각 다른 클래스로 되어 있음 -> 다수의 객체를 조정해야 하는 경우)
- 서로 관련된 객체 사이의 복잡한 통신과 제어를 한곳으로 집중하고 싶을 때
- M개의 객체 사이에 N개의 관계가 형성되어 있어 아주 복잡하게 얽혀 있을 때 이를 M:1 관계로 바꿔주기 위해
Structure
Pros
- 시스템과 객체를 분리함으로써 재사용성을 획기적으로 향상시킬 수 있다.
- 제어 로직을 한 군데 모아놨으므로 관리하기가 수월하다.
- 시스템에 들어있는 객체 사이에서 오가는 메시지를 확 줄이고 단순화 할 수 있다.
- 실제 컴포넌트를 변경하지 않고 새로운 중재자를 도입할 수 있다.
- 프로그램의 다양한 컴포넌트 간의 결합을 줄 일 수 있다.
- 개별 컴포넌트를 더 쉽게 재사용할 수 있다.
Cons
- 디자인을 잘 하지 못하면 중재자 객체가 너무 복잡해질 수 있다.
비슷한 패턴
Facade 패턴
- Mediator의 역할은 Colleague 역할의 중개자로서 주고받기를 수행함 -> 양방향
- Facade의 역할은 일방적으로 다른 역할을 이용해서 높은 레벨의 인터페이스 (API)를 만듦 -> 단방향
Observer 패턴
- Mediator 역할과 Colleague 역할의 통신은 Observer 패턴을 사용해서 수행되는 경우가 있음
- Mediator의 주요 목표는 시스템 컴포넌트 집합 간의 상호 종속성을 제거하는 것(단일 중재자 객체를 통해), Observer의 목표는 일부 객체가 다른 객체의 종속역할을 하는 객체간에 동적 단방향 연결을 설정하는 것
https://www.crocus.co.kr/1542
https://refactoring.guru/design-patterns/mediator
헤드퍼스트 디자인패턴 개정판 - 에릭 프리먼
'Design Pattern' 카테고리의 다른 글
[Design Pattern] 메멘토 패턴(Memento Pattern)에 대해 알아보자 (0) | 2022.08.02 |
---|---|
[Design Pattern] 책임 연쇄 패턴(Chain of Reponsibility Pattern)에 대해 알아보자 (0) | 2022.07.29 |
[Design Pattern] 빌더 패턴(Builder Pattern)에 대해 알아보자 (0) | 2022.07.28 |
[Design Pattern] 프록시 패턴(Proxy Pattern)에 대해 알아보자 (0) | 2022.07.25 |
[Design Pattern] 상태 패턴(State Pattern)에 대해 알아보자 (0) | 2022.07.19 |
댓글