中介模式包括四种角色:
1.中介者:一个接口,其中定义了中介中注册者之间进行通信的方法;
2.具体中介者:即是实现中介者接口的类,存放所有注册者的引用,并通过实现中介者接口来实现
具体注册者间的通信;
3.注册者:一个接口制订了具体注册者需要实现的方法;
4.具体注册者:实现注册者接口的类,具体注册者需要包含中介者的引用。具体注册者需要和其他的注册者进行通信时,
只需要将自己的请求信息通知给他包含的中介者实例即可。
通过上述表达我们可以看到中介者模式的优点:
1.可以避免许多对象为了相互之间的通信而相互显示引用,否则,不仅系统难于维护而且其他系统也难于复用这些对象。
2.可以通过中介者将原来分布于多个对象之间的交互行为集中在一起。当这些对象需要改变之间的通信的时候只需要一个具体中介者即可,不必修改注册者的代码,即注册者的代码可以被重用。
3.中介者的存在使得注册者之间完全解耦,修改一个具体的注册者的代码不会影响到其他的注册者。
4.中介者集中了注册者是如何交互的细节,使得系统比较清晰的知道整个系统的注册者是如何交互的。
5.当一些注册者之间互相通信,但又无法互相包含相互包含对方的引用时使用中介者模式是一个较好的选择。
注:由于具体中介者集中了注册者之间如何交互的细节,可能使得具体中介者变得非常复杂,增加了维护的难度。
适合使用中介者模式的情景:
1.许多对象以复杂的方式交互,所导致的依赖关系难以理解和维护;
2.一个对象引用其他多个对象,导致难以复用该对象。