中介者模式
定义
用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

- Mediator
    
- 中介者定义一个接口用于与各同时对象通信
 
 - ConcreteMediator
    
- 具体中介者通过协调各同时独享实现协作行为
 - 了解并维护它的各个同事
 
 - Colleague
    
- 每一个同事类都知道它的中介者对象
 - 每一个同事对象在需与其他的同事通信的时候,与它的中介者通信。
 
 
使用场景
- 一组对象以定义良好但是复杂的方式进行通信,产生的依赖关系结构混乱且难以理解
 - 一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象
 - 想定制一个分布在多个类中的行为,而又不想生成太多的子类。
 
优缺点
- 减少子类的生成
 - 它将各colleague解耦
 - 它简化了对象协议
 它对对象如何协作进行了抽象- 封装:使控制集中化,将交互的复杂性编程了中介者的复杂性。
 
相关的设计模式
- Facade与中介者模式不同之处在于它是对一个对象子系统进行抽象,从而提供一个更为方便的门面。它的协议是单向的,即facade对象对这儿子系统类提出请求,反之则不行。相反,Mediator提供了各Colleague对象不支持或不能支持的协作行为,而且协议是
多向的。 
实例
- todo
 
参考