영권's
디자인 패턴(Behavioral) - 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
'데브코스 웹 백엔드' 카테고리의 다른 글
20210810 - TIL (데이터베이스) (0) | 2021.08.11 |
---|---|
백엔드 데브코스 10일 동안의 회고 및 다짐 (0) | 2021.08.10 |
객체지향과 디자인 패턴 (0) | 2021.08.03 |
JAVA - 과제 (Object 클래스, String, StringBuilder, StringBuffer) (0) | 2021.08.03 |
Comments