- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * Mediator(中介者)模式 意图 用一个中介对象来封装一系列对象交互。中介者使各对象不需要相互引用, 从而使其耦合松散,而且可以独立地改变它们之间的交互。 A B A B 中介对象 对象间的多对多关系转化成一对多的关系 结构图 Mediator Colleague - mediator ConcreteMediator ConcreteColleague1 ConcreteColleague2 中介者定义一个接口用于与各同事(Colleague)对象通信。 具体中介者通过协调各同事对象实现协作行为。 每一个同事类都知道它的中介者对象。 每一个同事对象在需与其他的同事通信的时候, 仅仅与它的中介者通信。 Colleage (Mediator mediator) - - 具体应用:JavaAPI中的Mediator类模型 ComponentListener Component MyEventListener MyComponent1 MyComponent2 actionPerformed() addComponentListener() Mediator模式在事件驱动类应用中比较多,例如界面设计GUI、聊天消息传递等,在聊天应用中需要有一个MessageMediator,专门负责request/response之间任务的调节。 例:房屋租赁中介 public interface Mediator { public abstract void update(Colleague colleague, Object o); } 参数colleague代表谁要同中介者对象通信 参数o表示传给中介者的具体消息对象 Mediator接口 public abstract class Colleague{ private Mediator mediator; private String name; public Colleague(String name){ this.name = name;} public void setMediator(Mediator mediator){ this.mediator = mediator;} public Mediator getMediator(){ return mediator;} public getName(){ return name;} public abstract void beNotified(Object o); }//Colleague抽象类 Colleague是Lessor和Lessee的抽象父类 方法setMediator用于设置与之关联的中介者对象 方法beNotified将被中介者对象调用 HouseMediator是一个具体中介对象 import java.util.List; import java.util.ArrayList; import java.util.Iterator; public class HouseMediator implements Mediator{ private List lessorList = new ArrayList(); private List lesseeList = new ArrayList(); public void addLessor(Colleague lessor){ lessorList.add(lessor); lessor.setMediator(this);} public void removeLessor(Cooleague lessor){ lessorList.remove(lessor); lessor.setMediator(lessor); …… public void addLessee(Colleague lessee){ lesseeList.add(lessee); lessee.setMediator(this);} public void removeLessee(Colleague lessee){ lesseeList.remove(lessee); lessee.setMediator(this);} public void update(Colleague colleague, Object o){ if(co
文档评论(0)