객체들 사이의 관계가 얽혀있어 복잡할 때 사용해 결합도를 낮춰줍니다.
객체 간의 관계에 중재자를 두어 각각의 M:N을 M:1로 바꿔줍니다. 다음 그림처럼 관제탑을 거치는 것입니다.
Mediator로 통신하는 비행기를 예시로 했습니다.
------From Airplane1 To Airplane2-------
[from 1][to 2]message: Hi there
------From Airplane3 To Airplane2, 4--------
[from 3][to 2]message: How are you
[from 3][to 4]message: How are you
위처럼 Airplane 객체 간의 사이엔 직접적인 연결이 없고, Mediator를 통해서만 통신이 이루어집니다.
그렇기 때문에 통신 상에서 변경사항이 생길 경우, Mediator를 수정하므로써 관계 간 행동을 수정할 수 있어 유지보수에서 용이한 부분이 있습니다.
두 패턴의 다이어그램을 보면 굉장히 비슷합니다.
두 패턴의 차이는 Publisher - Subscriber 간의 관계 차이입니다.
옵저버 패턴은 하나의 Publisher에 대한 N개의 Subscriber가 존재합니다.
중재자 패턴은 N개의 Publisher에 M개의 Subscriber가 존재하며, 양 방향으로 상태를 관찰하기 때문에 Publisher와 Subscriber 간의 구분이 없이 Publisher가 되었다가 Subscriber가 될 수도 있습니다.
참조
감사합니다.
Text by Chaelin. Photographs by Chaelin, Unsplash.