首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

易学设计方式14 调停者模式(Mediator)

2012-11-20 
易学设计模式14 调停者模式(Mediator)调停者模式是对象的行为模式。调停者模式包装了一系列对象相互作用的

易学设计模式14 调停者模式(Mediator)
调停者模式是对象的行为模式。调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用。从而使它们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化。

为什么需要调停者
如下图所示,这个示意图中有大量的对象,这些对象既会影响别的对象,又会被别的对象所影响,因此常常叫做同事(Colleague)对象。这些同事对象通过彼此的相互作用形成系统的行为。从图中可以看出,几乎每一个对象都需要与其他的对象发生相互作用,而这种相互作用表现为一个对象与另一个对象的直接耦合。这就是过度耦合的系统。


通过引入调停者对象(Mediator),可以将系统的网状结构变成以中介者为中心的星形结构,如下图所示。在这个星形结构中,同事对象不再通过直接的联系与另一个对象发生相互作用;相反的,它通过调停者对象与另一个对象发生相互作用。调停者对象的存在保证了对象结构上的稳定,也就是说,系统的结构不会因为新对象的引入造成大量的修改工作。


一个好的面向对象的设计可以使对象之间增加协作性(Collaboration),减少耦合度(Couping)。一个深思熟虑的设计会把一个系统分解为一群相互协作的同事对象,然后给每一个同事对象以独特的责任,恰当的配置它们之间的协作关系,使它们可以在一起工作。







抽象调停者(Mediator)角色
具体调停者(ConcreteMediator)角色
抽象同事类(Colleague)角色
具体同事类(ConcreteColleague)角色



package com.jiaozg.mediator;public class Client {public static void main(String[] args) {// 创建调停者——主板MainBoard mediator = new MainBoard();// 创建同事类CDDriver cd = new CDDriver(mediator);CPU cpu = new CPU(mediator);VideoCard vc = new VideoCard(mediator);SoundCard sc = new SoundCard(mediator);// 让调停者知道所有同事  mediator.setCdDriver(cd);mediator.setCpu(cpu);mediator.setVideoCard(vc);mediator.setSoundCard(sc);// 开始看电影,把光盘放入光驱,光驱开始读盘cd.readCD();}}


输出结果:

您正在观看的是:One Piece
画外音:海贼王我当定了

参考:http://blog.csdn.net/m13666368773/article/details/7712213

热点排行