본문 바로가기
Design Pattern

[Design Pattern] 중재자 패턴(Mediator Pattern)에 대해 알아보자

by 개발자J의일상 2022. 8. 2.
반응형

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
헤드퍼스트 디자인패턴 개정판 - 에릭 프리먼
300x250

댓글