中介者模式

Catalogue   

定义

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

类图

角色

  • 抽象中介者(Mediator):定义出同事对象到中介者对象的接口,其中主要方法是一个(或多个)事件方法。
  • 具体中介者(ConcreteMediator):实现了抽象中介者所声明的事件方法。具体中介者知晓所有的具体同事类,并负责具体的协调各同事对象的交互关系。
  • 抽象同事类(Colleague):定义出中介者到同事对象的接口。同事对象只知道中介者而不知道其余的同事对象。同事类行为分为两种:
    • 自发行为(self-Method):一种同事本身的行为,例如改变对象本身的状态,处理自己的行为等。与其他同事类或中介者没有任何。
    • 依赖方法(Dep-Method):必须依赖中介者才能完成的行为。
  • 具体同事类(ConcreteColleague):所有的具体同事类均从抽象同事类继承而来。实现自己的业务,在需要与其他同事通信的时候,就与持有的中介者通信,
    中介者会负责与其他的同事交互。

优缺点

  • 松散耦合
  • 将对象间一对多的关联转变为一对一的关联
  • 单一职责原则
  • 开闭原则

使用场景

  • java.util.Timer中

参考