중재자 패턴은 객체간 커뮤니케이션을 하는 경우 중재자를 생성하여 객체끼리의 결합을 약화하는 디자인 패턴이다. 중재자 패턴을 사용하면 N:M
개의 객체, 또는 N:1개의 객체간의 데이터 전달도 구현할 수 있다.
객체의 통신을 다룬다는 점에서 옵저버 패턴과 비슷하지만, 옵저버패턴은 한 객체에서 일방적으로 데이터를 송신하는데 반해 중재자패턴은 양방향으로 데이터를 전달할 수 있다는 것이 차이점이다.
예시 코드
다른 객체와 통신을 하는 Colleague를 만들었다. 하지만, Colleague가 직접 동신하지는 않고 Mediator를 거쳐야 통신할 수 있다.
Mediator 클래스는 여러 컴포넌트를 통제해준다. Colleague를 list로 가지고있고 mediate()를 호출하면 그 Colleague들에게 메세지를 뿌려준다. 마치 SocketIo에서 socketIOServer.getRoomOperations().sendEvent();
로 소켓 메세지를 전송하는 것과 같다…!
colleague1에서 mediator로 보낸 메세지가 mediator를 구독하고 있는 객체들에게 무사히 전달되는 것을 볼 수 있다.
이렇게 여러 객체간의 통신을 중재해주는 객체를 추가해줌으로써, 통신 객체 간 의존성을 줄여 결합도를 감소시키는 것이 중재자 패턴이었다.
이 링크로 가면 코드를 볼 수 있다.