영권's

디자인 패턴(Behavioral) - Mediator 본문

데브코스 웹 백엔드

디자인 패턴(Behavioral) - Mediator

ykkkk 2021. 8. 17. 18:27

Mediator(중재자) 패턴

이 패턴은 개체 간의 직접 통신을 제한하고 중재자 개체를 통해서만 강제로 공동 작업을 수행합니다.

  • 객체들 간의 상호작용을 객체로 캡슐화한다.
  • Mediator 패턴은 객체들 간의 참조 관계를 객체에서 분리함으로써 상호작용을 독립적으로 다양하게 확대할 수 있다.
    • 객체간의 의존성을 줄일 수 있다.

Mediator 패턴 클래스 다이어그램

  • Mediator(중재자)의 역할
    • Mediator의 역할은 Colleague 역할과 통신을 해서 조정을 실행하기 위한 인터페이스를 결정합니다.
  • ConcreteMediator(구체적인 조정자, 중재자)의 역할
    • ConcreteMediator의 역할은 Mediator 역할의 인터페이스를 구현해서 실제의 조정을 실행합니다.
  • Colleague(동료)의 역할
    • Colleague의 역할은 Mediator역할과 통신을 실행할 인터페이스를 결정합니다.
  • ConcreteColleague(구체적인 동료)의 역할
    • ConcreteColleague의 역할은 Colleague 역할의 인터페이스를 구현합니다.

 

적용가능성

  • 클래스는 다른 여러 클래스와 긴밀하게 연결되어 있기 때문에 변경하기 어려운 경우 중재자 패턴을 사용하십시오.
    • 이 패턴을 사용하면 클래스 간의 모든 관계를 별도의 클래스로 추출하여 특정 구성 요소에 대한 변경 사항을 나머지 구성 요소에서 분리할 수 있습니다.
  • 다른 구성 요소에 너무 의존적이기 때문에 다른 프로그램에서 구성 요소를 재사용할 수 없는 경우 이 패턴을 사용합니다.
    • 중재자를 적용한 후에는 개별 구성 요소가 다른 구성 요소를 인식하지 못합니다. 그들은 비록 간접적이긴 하지만 중재자의 대상을 통해 여전히 서로 의사소통할 수 있었다. 다른 앱에서 구성 요소를 재사용하려면 새 중재자 클래스를 제공해야 합니다.
  • 다양한 컨텍스트에서 몇 가지 기본 동작을 재사용하기 위해 수많은 구성요소 하위 클래스를 작성하는 경우 중재자를 사용하십시오.
    • 구성요소 간의 모든 관계가 중재자 내에 포함되므로, 구성요소 자체를 변경할 필요 없이 새로운 중재자 클래스를 도입하여 이러한 구성요소가 완전히 새로운 방식으로 협업할 수 있도록 쉽게 정의할 수 있습니다.

 

장점

  • Single Responsibility Principle(단일 책임 원칙)
    •  다양한 구성 요소 간의 통신을 한 곳에 추출하여 더 쉽게 이해하고 유지 관리할 수 있습니다.
  • Open/Closed Principle(열림/닫힘 원리)
    • 실제 구성 요소를 변경하지 않고도 새로운 매개 변수(Colleague)를 도입할 수 있습니다.
  • 프로그램의 다양한 구성 요소 간의 결합도를 줄일 수 있습니다.
  • 개별 구성요소를 더 쉽게 재사용할 수 있습니다.
    • Mediator는 재이용하기 어렵지만 Colleague는 재이용하기 쉽다.

단점

  • 시간이 지나면서 중재자는 God Object가 될 수 있다.
    • God Object : 객체 지향 프로그래밍에서 God 객체는 너무 많이 알고 있거나 너무 많은 일을 하는 객체입니다.

 

 

예제 코드 링크

 


도서) Java언어로 배우는 디자인 패턴 입문

 

https://refactoring.guru/design-patterns/command

 

Comments