天天看点

Java设计模式--中介者模式中介者模式Mediator Pattern类图模式的结构与使用简单的例子运行截图中介者模式的优点适用中介者模式的情景下载源码请到

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

define an object that encapsulates how a set of objects interact. mediator promotes loose coupling by keeping objects from refering to each other explicitly, and it lets you vary their interaction independently.

Java设计模式--中介者模式中介者模式Mediator Pattern类图模式的结构与使用简单的例子运行截图中介者模式的优点适用中介者模式的情景下载源码请到

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

+ 中介者(mediator):中介者使一个接口,该接口定义了用于同事(colleague)对象之间进行通信的方法。

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

+ 同事(colleague):一个接口,规定了具体同事需要实现的方法。

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

Java设计模式--中介者模式中介者模式Mediator Pattern类图模式的结构与使用简单的例子运行截图中介者模式的优点适用中介者模式的情景下载源码请到

可以避免许多的对象为了之间的通信而相互显示引用,否则,不仅系统难于维护,而且也使其他系统难以复用这些对象。

可以通过中介者将原本分布于多个对象之间的交互行为集中在一起。当这些对象之间需要改变之间的通信行为时,只需使用一个具体中介者即可,不必修改各个具体同事的代码,即这些同事可被重用。

具体中介者使得各个具体同事完全解耦,修改任何一个具体同事的代码不会影响到其他同事。

具体中介者集中了同事之间是如何交互的细节,使系统比较清楚地知道整个系统中同事是如何交互的。

当一些对象想相互通信,但又无法相互包含对方的引用,那么使用中介者模式就可以使这些对象互相通信。

注:由于具体中介者集中了同事之间是如何交互的细节,可能使具体具体中介者变得非常复杂,增加了维护的难度。

许多对象以复杂的方式交,所导致的依赖关系使系统难以理解和维护。

一个对象引用其他很多对象,导致难以复用该对象。

<a href="https://github.com/androidwolf">mygithub</a>