网站大量收购独家精品文档,联系QQ:2885784924

设计模式-调停者.ppt

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
设计模式-调停者

1、注解:孙大圣变成的鱼儿,与鱼儿爸爸、妈妈生出的鱼儿的不同。 * 1、注解:孙大圣变成的鱼儿,与鱼儿爸爸、妈妈生出的鱼儿的不同。 * 1、注解:孙大圣变成的鱼儿,与鱼儿爸爸、妈妈生出的鱼儿的不同。 * 1、注解:孙大圣变成的鱼儿,与鱼儿爸爸、妈妈生出的鱼儿的不同。 * 1、注解:孙大圣变成的鱼儿,与鱼儿爸爸、妈妈生出的鱼儿的不同。 * 1、注解:孙大圣变成的鱼儿,与鱼儿爸爸、妈妈生出的鱼儿的不同。 * 1、注解:孙大圣变成的鱼儿,与鱼儿爸爸、妈妈生出的鱼儿的不同。 * 1、注解:孙大圣变成的鱼儿,与鱼儿爸爸、妈妈生出的鱼儿的不同。 * 1、注解:孙大圣变成的鱼儿,与鱼儿爸爸、妈妈生出的鱼儿的不同。 * 1、注解:孙大圣变成的鱼儿,与鱼儿爸爸、妈妈生出的鱼儿的不同。 * 1、注解:孙大圣变成的鱼儿,与鱼儿爸爸、妈妈生出的鱼儿的不同。 * 1、注解:孙大圣变成的鱼儿,与鱼儿爸爸、妈妈生出的鱼儿的不同。 * 实践的一小步 代码质量的一大步 实践的一小步 代码质量的一大步 实践的一小步 代码质量的一大步 设计模式 —调停者模式 调停者模式(Mediator Pattern) 实践的一小步 代码质量的一大步 是对象的行为模式。 包装了一系列对象相互作用的方式,是这些对象不必相互明显引用,从而使他们可以较松散的耦合,使得其可以彼此独立的变化。 增加协作性(Collaboration),减少耦合度(Coupling) 体现了“迪米特法则(LoD)(最少知识原则)” 属于很容易被滥用的一个设计模式 如何恰到好处的使用设计模式 完全了解面临的具体问题 完全了解设计模式 非常了解怎样使用设计模式解决实际问题 要将设计模式理论与具体系统需求情况相结合,而不是生硬的组合和拼凑 实践的一小步 代码质量的一大步 大量对象间的复杂关系 实践的一小步 代码质量的一大步 A B C D G E F H I 模式对象图 实践的一小步 代码质量的一大步 A B C D H I F G F Mediator Colleague Mediator 同 事: 调停者: 模式类图 实践的一小步 代码质量的一大步 模式角色 抽象调停者(Mediator)角色: 定义出同事对象到调停者对象的接口。可省略 具体调停者(Concrete Mediator)角色: 实现了抽象调停者所声明的事件方法。具体调停者知晓所有的同事对象,并从具体同事对象接受消息,向具体同事对象发出命令 抽象同事(Colleague)角色: 定义出调停者到同事对象的接口。同事对象只知道调停者,而不知道其余的同事对象 具体同事(Concrete Colleague)角色 每一个具体同事类都清楚自己在小范围内的行为,而不知道它在大范围内的目的。 实践的一小步 代码质量的一大步 模式时序图 实践的一小步 代码质量的一大步 模式分析 优点 可以减少使用静态的继承关系,是的具体同事类可以更加容易得被复用 可以避免同事对象之间的过度耦合,使得调停者类与同事类可以相对独立的演化 将多对多的相互作用转换为一对多的相互作用,是的对象之间的关系更加易于维护和理解 将对象的行为和协作抽象化,把对象在小尺度的行为上与其他对象的相互作用分开 缺点 降低了同事对象的复杂性,代价是增加了调停者对象的复杂性 提供了倾斜的可扩展性和可复用性:调停者类经常充满了各个具体同事类的关系协调代码,不易复用。因此,具体同事类的复用是以调停者类的不可复用为代价的 实践的一小步 代码质量的一大步 不适合的使用场合 不应当在责任划分混乱时使用 不应当对“数据类” 和“方法类”使用。 封装应该是行为及其所涉及的状态的封装。不应当将其分开。 实践的一小步 代码质量的一大步 模式示例 实践的一小步 代码质量的一大步 没有主板,使用电脑看电影的过程 模式示例 实践的一小步 代码质量的一大步 加入主板之后的电脑各部件关系,如下图所示: 程序分析 例如使用电脑看电影过程的例子 //抽象同事类 package com.bankht.Mediator; public abstract class Colleague { // 持有一个调停者对象 private Mediator mediator; public Colleague(Mediator mediator) { this.mediator = mediator; } public Mediator getMediator() { //获取当前同事类对应的调停者对象 return mediator; } } 实践的一小步 代码质量的一大步 程序分析 //具体同事类----光驱 package

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档