中介者模式

定义

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

类图

  1. Mediator
    • 中介者定义一个接口用于与各同时对象通信
  2. ConcreteMediator
    • 具体中介者通过协调各同时独享实现协作行为
    • 了解并维护它的各个同事
  3. Colleague
    • 每一个同事类都知道它的中介者对象
    • 每一个同事对象在需与其他的同事通信的时候,与它的中介者通信。

使用场景

  1. 一组对象以定义良好但是复杂的方式进行通信,产生的依赖关系结构混乱且难以理解
  2. 一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象
  3. 想定制一个分布在多个类中的行为,而又不想生成太多的子类。

优缺点

  1. 减少子类的生成
  2. 它将各colleague解耦
  3. 它简化了对象协议
  4. 它对对象如何协作进行了抽象
  5. 封装:使控制集中化,将交互的复杂性编程了中介者的复杂性。

相关的设计模式

  1. Facade与中介者模式不同之处在于它是对一个对象子系统进行抽象,从而提供一个更为方便的门面。它的协议是单向的,即facade对象对这儿子系统类提出请求,反之则不行。相反,Mediator提供了各Colleague对象不支持或不能支持的协作行为,而且协议是多向的。

实例

  1. todo

参考

wikipedia