设计模式——中介者模式

来源:互联网 发布:linux退出命令行 编辑:程序博客网 时间:2024/05/17 02:36
中介者(Mediator)模式:用一个中介者来封装一系列的对象交互。中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立改变它们之间的交互。



Mediator:中介者抽象接口,定义一个接口用于与各个Colleague对象通讯;
ConcreteMediator:具体中介者,存储并维护各个Colleague对象;
Colleague:同事类,每个同事类都知道它的中介者对象,不能与同事进行通讯,只能通过中介者进行通讯;

适用性:
(1)当一组对象以有规律的方式通讯,但相互依赖关系混乱时;
(2)当一个对象引用其他好多对象并且与这些对象通讯,导致难以复用该对象时;
(3)想定制一个发布在多个类中的行为,而又不想生成太多的子类时;

优点:
(1)将原本发布在多个对象进的行为集中在Mediator类中,减少了子类生成;
(2)将各个Colleague类解耦,可以独立的改变和复用各Colleague类和Mediator类;
(3)简化了对象协议;
(4)将Colleague对象的交互独立成一个类,有助于弄清系统对象是如何交互的;

缺点:
Mediator变得过于复杂,难以维护;

实现:
(1)当Colleague仅与一个Mediator工作时,没必要定义一个抽象Mediator类;
(2)Colleague与Mediator直接的通讯,一种方式是使用观察者模式,Medaitor实现为一个Observer,各个Colleague作为Subject;另一种方法是Mediator定义一个特殊的通知接口,各个Colleague通讯直接调用该接口。
0 0
原创粉丝点击