软件体系结构与设计模式 第11章__中介者模式

软件体系结构与设计模式 第11章__中介者模式

ID:43809437

大小:172.00 KB

页数:17页

时间:2019-10-14

软件体系结构与设计模式 第11章__中介者模式_第1页
软件体系结构与设计模式 第11章__中介者模式_第2页
软件体系结构与设计模式 第11章__中介者模式_第3页
软件体系结构与设计模式 第11章__中介者模式_第4页
软件体系结构与设计模式 第11章__中介者模式_第5页
资源描述:

《软件体系结构与设计模式 第11章__中介者模式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第十二章中介者模式9/16/20211中介者模式用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。MediatorPatternDefineanobjectthatencapsulateshowasetofobjectsinteract.Mediatorpromotesloosecouplingbykeepingobjectsfromreferringtoeachotherexplicitly,anditletsyouvarytheirinte

2、ractionindependently.一、概述9/16/20213中介者模式是封装一系列的对象交互的成熟模式,其关键是将对象之间的交互封装在称作中介者的对象中,中介者使各对象不需要显示地相互引用,这些对象只包含中介者的引用。当系统中某个对象需要和系统中另外一个对象交互时,只需将自己的请求通知中介者即可。二、中介者模式的结构与使用9/16/20214模式的结构中包括四种角色:中介者(Mediator)具体中介者(ConcreteMediator)同事(Colleague)具体同事(ConcreteColleague)

3、9/16/20215模式的UML类图模式的结构的描述与使用古代相互交战的A,B,C三方,想通过一个中介者调停之间的战火。A方委托调停者转达的信息是:“要求B方归还曾抢夺的100斤土豆,要求C方归还曾抢夺的20头牛”;B方委托调停者转达的信息是:“要求A方归还曾抢夺的10只鸡,要求C方归还曾抢夺的15匹马”;C方委托调停者转达的信息是:“要求A方归还曾抢夺的300斤小麦,要求B方归还曾抢夺的50头驴”。9/16/202181.同事(Colleague):Colleague.javapublicinterfaceColle

4、ague{publicvoidgiveMess(String[]mess);publicvoidreceiverMess(Stringmess);publicvoidsetName(Stringname);publicStringgetName();}注:本问题中,只需要一个具体中介者,我们并不需要一个中介者(Mediator)接口。9/16/202192.具体中介者(Mediator):ConcreteMediator.javapublicclassConcreteMediator{ColleagueAcolleag

5、ueA;ColleagueBcolleagueB;ColleagueCcolleagueC;publicvoidregisterColleagueA(ColleagueAcolleagueA){this.colleagueA=colleagueA;}publicvoidregisterColleagueB(ColleagueBcolleagueB){this.colleagueB=colleagueB;}publicvoidregisterColleagueC(ColleagueCcolleagueC){this.co

6、lleagueC=colleagueC;}publicvoiddeliverMess(Colleaguecolleague,String[]mess){if(colleague==colleagueA){if(mess.length>=2){colleagueB.receiverMess(colleague.getName()+mess[0]);colleagueC.receiverMess(colleague.getName()+mess[1]);}}elseif(colleague==colleagueB){if(

7、mess.length>=2){colleagueA.receiverMess(colleague.getName()+mess[0]);colleagueC.receiverMess(colleague.getName()+mess[1]);}}elseif(colleague==colleagueC){if(mess.length>=2){colleagueA.receiverMess(colleague.getName()+mess[0]);colleagueB.receiverMess(colleague.ge

8、tName()+mess[1]);}}}}9/16/2021113.具体同事(ConcreteColleague)_1:ColleagueA.javapublicclassColleagueAimplementsColleague{ConcreteMediatormediator;Stringname;ColleagueA(Con

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。