中介者模式

概述

  • 中介者模式是封装一系列的对象交互的成熟模式,其关键是将对象之间的交互封装在称作中介者的对象中,中介者使各对象不需要显示地相互引用,这些对象只包含中介者的引用。
  • 当系统中某个对象需要和系统中另外一个对象交互是,只需要将自己的请求通知中介者即可。

中介者模式的结构

中介者模式的结构中包括四种角色。

  • 中介者(Mediator)
  • 具体中介者(ConcreteMediator)
  • 同事(Colleague)
  • 具体同事(ConcreteColleague)

中介者(Mediator)

  • 中介者是一个接口。
  • 该接口定义了用于同事(Colleague)对象之间进行通信的方法。

具体中介者(ConcreteMediator)

  • 具体中介者是实现中介者接口的类。
  • 具体中介者需要包含所有具体同事(ConcreteColleague)的引用,并通过实现中介者接口中的方法来满足具体同事之间的通信请求。

同事(Colleague)

  • 一个接口。
  • 规定了具体同事需要事先的方法。

具体同事(ConcreteColleague)

  • 实现同事接口的类。
  • 具体同事需要包含具体中介者的引用,一个具体同事需要和其他具体同事交互时,只需将自己的请求通知给它所包含的具体中介者即可。

中介者模式的优点

  • 可以避免许多的对象为了之间的通信而相互显示引用,否则,不仅系统难于维护,而且也使其他系统难以复用这些对象。
  • 可以通过中介者将原本分布于多个对象之间的交互行为集中在一起。当这些对象之间需要改变之间的通信行为时,只需使用一个具体中介者即可,不必修改各个具体同事的代码,即这些同事可被重用。
  • 具体中介者使得各个具体同事完全解耦,修改任何一个具体同事的代码不会影响到其他同事。
  • 具体中介者集中了同事之间是如何交互的细节,使系统比较清楚地知道整个系统中的同事是如何交互的。
  • 当一些对象相互通信,但又无法相互包含对方的引用,那么使用中介者模式就可以使这些对象相互通信。

适合使用中介者模式的情景

  • 许多对象以复杂的方式交互,所导致的依赖关系使系统难以理解和维护。
  • 一个对象引用其他很多对象,导致难以复用该对象。

  • 如果仅仅需要一个具体中介者,模式中的中介者接口可以省略。
  • 由于具体中介者集中了同事之间是如何交互的细节,可能使具体中介者变得非常复杂,增加了维护的难度。

你可能感兴趣的:(中介者模式)