Why
如果一个系统中对象之间的联系呈现网状结构,存在大量的多对多联系,会导致系统非常复杂,可以使用中介者类来达到降低系统耦合度的目的,将对象之间的一些交互行为从各个对象中分离出来,集中封装到一个中介者对象中进行统一协调。将多对多转化为一对多,是迪米特法则的一个应用。
What
UML
![中介者模式](https://blogbucket-1252640517.cos.ap-beijing.myqcloud.com/img/media.png)
角色
Colleague(抽象同事类):定义了同事类公共的方法,同时维持了一个对抽象中介者的引用,子类可以通过该引用与中介者通信。
适用场景
- 系统中对象之间存在复杂的引用关系
- 一个对象引用了其他很多对象导致难以复用
- 希望通过一个中间类来封装多个类的行为,而又不想生成太多子类