- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 将一个类的基本部分抽取出来放到一个基类中,这样它就不必重复出现在几个派生类里. ABC三个方法具有离散的特点;分别调用 有没有想过ABC的执行具有一定的顺序,前后的关联? ABC三个方法具有离散的特点;分别调用 有没有想过ABC的执行具有一定的顺序,前后的关联? ABC三个方法具有离散的特点;分别调用 有没有想过ABC的执行具有一定的顺序,前后的关联? ABC三个方法具有离散的特点;分别调用 有没有想过ABC的执行具有一定的顺序,前后的关联? * 基本方法:军训,上课,毕业设计,授予学位 模板方法:本科生培养 * 注意观察:反向的控制结构 由教育本本科培养处实例化对象,调用清华大学本科培养处的本科生培养方法 试试:建立一个西南大学本科培养处的类,然后同样由教育部本科培养处实例化对象,然后调用西南大学本科培养处的本科培养方法 比较 * 比较迭代子模式与组合模式的区别? 重点观察集合的特点! 聚合类与迭代类 并列定义 * 红字部分就是内禀的要点,即ConcreteIterator是在ConcreteAggregate内部定义的, ConcreteIterator实例可以访问ConcreteAggregate中的objs * * Changestate操作附属于context类 难点在于 状态类完成操作后应自动切换状态,也就是应该由状态类来完成状态切换,但是状态类是context类的一个成员,他能不能将自己更换掉呢? Changestate操作附属于context类 难点在于 状态类完成操作后应自动切换状态,也就是应该由状态类来完成状态切换,但是状态类是context类的一个成员,他能不能将自己更换掉呢?解决方法就是将state类作为context类的友元,是的state类能调用changestate() 为兼容性考虑 为兼容性考虑 * 状态模式也可以由内部成员变量表示状态,然后由条件分支语句根据状态选择行为! Tcpstate友元可访问tcpconnection的changestate私有操作 * 每个状态实例都具有唯一的状态和操作,故改变状态实例,即完成了根据条件转移状态的目的,也就不需要条件分支语句了。 将this作为参数传递给state中的操作,是因为完成操作之后,this所代表的tcpconnection可能需要改变状态 因为tcpstate是tcpconnection的友元,所以可以操作其私有的changstate操作 * 课堂练习:画出状态转换图 这个例子中将状态操作放在context类中,状态类去调用其而已 7.9.1 中介者模式的由来 上述实现代码的UML图如下: 7.9.1 中介者模式的由来 从上图可以看出,对话框中各个对象间存在着复杂的交互关系,上述的实现方式要求相互交互的对象间要保存相关的对象的引用,在自己的代码中要调用相关对象的方法。 上述的实现方法存在以下几个缺点: 一是各对象间紧密耦合【1】,每个对象的修改必然导致相关对象也要修改; 二是子类太多,比如每个不同的按钮都要生成一个不同子类,代码的复用性很差; 7.9.1 中介者模式的由来 三是交互关系分散在各个子类中,代码维护困难; 四是应对需求变化的能力差,设想以下,如果新增一个清空“目标列表框”的“Clear”按钮,需要添加和修改的代码将涉及系统的多个类。 仔细分析一下我们可以发现,导致上述问题的主要原因是各对象间存在的多对多的复杂交互关系,如果我们把这些多对多的交互关系抽象出来集中到一个对象中来处理,所有的复杂性也就被集中到单一的一个对象中。实际上后一种方法为我们引入了一种新的设计模式-中介者模式。 7.9.2 中介者模式的意图和适用性 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 7.9.2 中介者模式的意图和适用性 在软件构建过程中,经常会出现多个对象互相关联交互的情况,对象之间常常会维持一种复杂的引用关系。如果遇到一些需求的更改,这种直接的引用关系将面临不断的变化。 在这种情况下,我们可使用一个“中介对象”来管理对象之间的关联关系,避免相互交互的对象之间的紧耦合引用关系。从而更好地抵御变化。 7.9.3 中介者模式的结构和参与者 Mediator模式结构图 7.9.3 中介者模式的结构和参与者 Mediator(中介者) 中介者定义一个接口用于与各同事(Colleague)对象通信。 ConcreteMediator(具体中介者) 具体中介者通过协调各同事对象实现协作行为;维护每个需要协调的同事的引用。 Colleague Class(同事类) 每个同事类维护一个中介者对象的引用;每个同事对象在需要与其他的同事通信时,与中介者通信。 7.9.4 应
您可能关注的文档
- 第七单片机存储器的扩展剖析.ppt
- 党建工作汇报剖析.ppt
- 党建工作制度剖析.doc
- 第七单元第二第五节生物的变异剖析.ppt
- 第七单元第三第三节生物进化的原因(A案)剖析.ppt
- 第七单元第三第三节生物进化的原因剖析.ppt
- 第七单元第三第三节生物进化的原因最新精致(新人教八级下册)剖析.ppt
- 第七单元第一第一节植物的生殖(第二课时)最新精致(新人教八级下册)剖析.ppt
- 第七单元第一生物的生殖和发育复习剖析.ppt
- 党课(廉洁从业)剖析.ppt
- 无人机物流配送路径优化2025年技术创新动态追踪.docx
- 无人机载重技术在航空物流领域的应用创新与政策环境2025年解读.docx
- 无人机载重技术突破2025年对航空物流市场的驱动作用报告.docx
- 无人机载重航空物流行业商业模式创新报告.docx
- 智慧养老社区老年活动中心智能化改造与老年人生活娱乐需求分析.docx
- 智慧监管助力2025年垃圾分类产业发展研究.docx
- 无人机载重技术革新对航空物流行业的深远影响报告.docx
- 智慧城市交通管理用户付费意愿与市场潜力研究报告.docx
- 无人机精准喷洒农药技术革新,2025年农业革命报告.docx
- 无人机载重技术在航空物流中的绿色物流应用报告.docx
最近下载
- 2025年一级建造师执业资格考试《机电工程管理与实务》真题卷(附解析).docx VIP
- (新人教PEP版)英语六年级下册 Unit 4 大单元教学设计.docx
- 2025年秋季新教材部编版小学道德与法治二年级上册全册道法最新教案(教学设计).docx
- 2025年营养指导员考试真题库(含答案).pdf
- 八年级语文上册新教材解读课件(统编版2024).pptx
- 长征寻迹,爱心志愿——遵义五日红色旅游产品设计.pdf
- 野外数字路线地质调查野外数字填图教程.ppt VIP
- 中国在线供应链金融行业市场行情动态分析及发展前景趋势预测报告.docx
- c14测年和观音阁修建史的初步分析——c14测年在中国古代木结构建筑中的应用word格式论文.docx
- 场内35kV集电线路施工方案.doc VIP
文档评论(0)