欢迎来到天天文库
浏览记录
ID:21708101
大小:118.50 KB
页数:6页
时间:2018-10-24
《java设计模式-调停者模式的实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.意图: 调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而使他们可以松散偶合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多对多的相互作用转化为一对多的相互作用。调停者模式将对象的行为和协作抽象化,把对象在小尺度的行为上与其他对象的相互作用分开处理。2.类图: 3.原理:4.特征: 系统中有大量的对象,这些对象既会影响别的对象,又会被别的对象所影响,因此常常叫做同事(Colleague)对象。
2、抽象调停者(Mediator)角色:定义出同事对象到调停者对象的接口,其中主要的方法是一个(或多个)事件方法。在某些情况下,这个抽象对象可以省略。 具体调停者(ConcreteMediator)角色:实现了抽象超类所声明的事件方法。具体调停者知晓所有的具体同事类,它从具体同事对象接收消息,向具体同事对象发出命令。 抽象同事类(Colleague)角色:定义出调停者到同事对象的接口。同事对象只知道调停者而不知道其余的同事对象。 具体同事对象角色:从抽象同事类继承,实现自己的职责。5.说明: 调停
3、者模式是迪米比特法则的一个具体运用。6.使用案例: WTO是一个协调组织,各个贸易地区可以经由WTO组织进行协调。WTO扮演的正是调停者的角色。它取代了原来各个贸易地区自行进行相互协调和谈判的强耦合关系。各个贸易地区在加入WTO组织之前的贸易状态,如下图所示: 加入WTO之后的贸易关系,如下图所示: 7.代码://抽象同事类(Colleague)角色 Colleague.javapublicabstractclassColleague{ privateMediatormyMedi
4、ator; /** *Createcolleaguewhichknowsaboutsuppliedmediator */ protectedColleague(Mediatormediator) { this.myMediator=mediator; } /** *@returnmediatorthiscolleagueknowsabout */ protectedMediatorgetMediator() {
5、 returnmyMediator; } /** *行动方法,由子类实现,一个同事对象在得知其它对象状态有改变时,会执行此操作。 */ publicabstractvoidaction(); /** *示意性的商业方法,调用此方法可以改变对象的内部状态 */ publicvoidchange() { myMediator.changed(this); }}//ConcreteColleague1.java/***每个同事
6、对象仅知道调停者而不知道其它同事对象*/publicclassConcreteColleague1extendsColleague{ publicConcreteColleague1(Mediatormediator) { super(mediator); } publicvoidaction() { }}//ConcreteColleague2.java/***每个同事对象仅知道调停者而不知道其它同事对象*/publicclassConcrete
7、Colleague2extendsColleague{ publicConcreteColleague2(Mediatormediator) { super(mediator); } publicvoidaction() { }}//Mediator.javapublicinterfaceMediator{ /** *事件方法,当自身的状态发生了变化时,一个同事对象可以 *调用这个事件方法来通知调停者,从而更新所有有关
8、的同事对象。 */ voidcolleagueChanged(Colleaguecolleague);}//ConcreteMediator.javapublicclassConcreteMediatorimplementsMediator{ privateConcreteColleague1aConcreteColleague1; privateConcreteColl
此文档下载收益归作者所有