[디자인 패턴] 미디에이터 패턴
미디에이터는 중재자를 뜻하는 단어다.

단어의 뜻처럼, 미디에이터 패턴은 여러 객체들 간의 상호작용을 가운데서 중재하는 역할을 한다.
클래스 A, B, C, D 등이 서로간에 소통을 하고 상호작용을 한다면, 서로의 의존관계가 얽히고설켜서 읽기도 힘들고 고치기도 힘들게 될 것이다.
미디에이터 클래스는 이러한 의존관계롤 혼자 다 끌어안고, 상호작용을 다 처리해주는 중간 컨트롤러의 역할을 한다.
그리고 미디에이터에선 각 객체들을 동적으로 추가하거나 교체할 수 있다.
예시를 보자.
EndPoint는 각 객체의 인터페이스다.
그리고 A, B, C라는 클래스를 구현할 건데, A는 B의 값을 요청해서 끌어오고, B는 C의 값을 요청해서 끌어오고, C는 A의 요청해서 끌어온 뒤 출력할 것이다.
그리고 다른 녀석의 값을 요청하는 작업은 전부 미디에이터를 통해 수행한다.



그리고 미디에이터다.
각 객체들이 값을 요청하는 것을 대리해준다.
난 그냥 인터페이스 없이 구현했지만, 확장의 가능성이 있다면 인터페이스를 두는 게 좋을 것이다.
그리고 간단한 사용례다.

이 패턴의 가장 심각한 단점은, 복잡한 상호작용을 미디에이터에서 다 관리하므로...
미디에이터 객체 자체를 관리하기가 어려워진다는 것이다. 그래서 잘 고려하고 사용해야 한다.
옵저버 패턴등과 함께 사용되기도 한다.
참조
헤드퍼스트 디자인 패턴
GoF의 디자인 패턴
https://palpit.tistory.com/201