标签:
1.定义
用一个中介对象来封装一系列的对象交互。中介者使得各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
2.结构
Mediator:中介者接口。在里面定义各个同事之间交互需要的方法,可以是公共的通信方法
ConcreteMediator:具体中介者实现对象。它负责了解并维护各个同事对象,并负责具体的协调各同事对象的交互关系
Colleague:同事类的定义,通常实现为抽象类,主要负责约束同事对象的类型,并实现一些具体同事类之间的公共方法。
ConcreteColleague: 具体的同事类,实现自己的业务,在需要与其他同事通信的时候,就与持有的中介者通信,中介者会负责与其他的同事交互。
coding...
3. 广义中介者
是否有必要为同事对象定义一个公共的父类?
同事类有必要持有中介者对象吗?
是否需要中介者接口?
中介者对象是否需要持有所有的同事?
中介者对象只是提供一个公共方法来接受同事对象的通知吗?
4.本质
封装交互
5.选择中介者模式
如果一组对象之间的通信方式比较复杂,导致相互依赖、结构混乱,可以采用中介者模式,把这些对象相互的交互管理起来,各个对象都只需要和中介者交互,从而使各个对象松散耦合,结构也更清晰易懂
如果一个对象引用多个对象,病这几跟这些对象交互,导致难以服用该对象,可以采用中介者模式。
6.相关模式
外观模式
观察者模式
理解
当出现多个业务类相互之间交互的时候,可以考虑中介者模式,一般中介者模式可以考虑实现为单例模式,这样在不同的业务通知时直接调用对应的通知方法即可。例如A写入数据后,通知B写入,B写入数据后,通知C写入,C写入完数据后通知A,把这种相互调用的耦合逻辑全部交给中介者,右中介者去协调实现。
标签:
原文地址:http://www.cnblogs.com/zhaojunyang/p/5746745.html