본문 바로가기
SW 공부/Design Patterns

[디자인패턴] Mediator pattern (중재자 패턴)

by 꼬냉상 2022. 8. 28.

Purpose of Mediator Pattern (중재자 패턴의 목적)

- Allows loose coupling by encapsulating the way disparate sets of objects interact and communicate with each other.

- 상호 작용하고 통신하는 방식을 캡슐화하는 것으로 그 개체 집합 사이에서 컨트롤 타워(관제탑) 같은 역할을 함

 

Mediator pattern (중재자 패턴)

- mediator는 '중재자', '조정자', '중개인'이란 뜻

- Encapsulates interconnects between objects into Mediator : 연결을 Mediator로 캡슐화

- Promotes loose coupling between classes : 느슨한 결합을 촉진함

→ Colleague들끼리는 직접적인 communication이 없음.

→ 구성 요소들끼리 직접 통신을 하기보다는 허브(hub)의 역할을 하는 객체를 두고 이 객체가 구성요소들간 통신 메커니즘을 캡슐화(encapsulation)하는 설계 패턴

 객체지향 설계에서는 많은 객체가 존재하고 이들이 서로 관계를 맺으며 상호작용한다. 이때 객체의 수가 너무 많아지면 서로 통신하느라 복잡해져 객체지향에서 가장 중요한 느슨한 결합의 특성을 해칠 수 있다. 이를 해결하는 한 가지 방법은 중간에 이를 통제하고 지시할 수 있는 역할을 하는 중재자를 두는 것이다. 중재자에게 모든 것을 요구하여 통신의 빈도수를 줄여 객체지향의 목표를 달성하게 해주는 것이 바로 mediator 패턴이다.

 

Related Patterns

- Observer  vs Mediator 

  Observer가 

  → Communication distributed by using observer and subject objects : 분산된 통신으로 
  → reusable : 재사용이 좋으나
  → can be hard to understand the multiple flows of communication : 이해가 어렵다면

  Mediator는

  → Mediator encapsulates the communication : 통신을 캡슐화해서

  → mediators are hardly ever reusable : 재사용이 어렵고

  → easy to understand the flow of communication : 대신 흐름을 이해하기는 쉬움

 

Quiz) 중재자(Mediator) 패턴에 대해 올바른 것은?

① 중재자(Mediator) 클래스 구현 코드는 응용 프로그램에 의존적이기 때문에 재사용성이 높지 않다.

  → mediators are hardly ever reusable : 재사용이 어렵다.

② 팩토리 메쏘드 패턴의 구현에 주로 사용 된다.

→ Factory method 패턴에서는 Template method 패턴을 사용하여 인스턴스를 생성

③ Gof(Gang of Four) 분류 기준으로 클래스 범위(class scope) 패턴이다.

④ 통신(communication)에 참여하는 객체들간 강한 결합(tight coupling)을 만들어낸다.

 

Quiz) 다음 중 Mediator 패턴의 시퀀스 다이어그램으로 잘못된 것은?

-> 정답은 (d) : colleague  끼리 communication이 발생하는 경우는 없다.

 

Quiz) 글꼴 다이얼로그(Font Dialog)의 구성요소들 간에 M:N의 복잡한 통신 메커니즘(communication mechanism)을 요구한다. 예를 들어 어떤 특정한 글꼴을 콤보박스 (combo box)를 통해 선택하면, 해당 글꼴이 허용하는 글꼴 스타일과 크기 정보를 각각의 리스트 박스에 표시해야 한다. 또한 미리 보기 영역에 선택된 옵션에 따른 글꼴의 모습을 보여주어야 한다. 

 구성 요소들끼리 직접 통신을 하기보다는 허브(hub)의 역할을 하는 객체를 두고 이 객체가 구성요소들간 통신 메커니즘을 캡슐화(encapsulation)함으로써 해당 문제를 해결하는 설계 패턴의 이름은?

→ Mediator Pattern

 

 

본 글은 개인의 S/W 구조설계 역량 강화를 위한 학습 목적으로 정리된 내용입니다.
일부 타/개인 단체에 저작권이 있는 자료를 포함하고 있으므로, 절대 영리 목적으로 사용하실 수 없습니다.

 

반응형

댓글