第七章行为型设计模式精要.ppt

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

* * 状态模式也可以由内部成员变量表示状态,然后由条件分支语句根据状态选择行为! * 每个状态实例都具有唯一的状态和操作,故改变状态实例,即完成了根据条件转移状态的目的,也就不需要条件分支语句了。 * 课堂练习:画出状态转换图 幻灯中的例子是针对第一种情况的 书上的例子是针对第三中情况的 * 7.9.4 应用举例 class ConcreteMediator : public Mediator { public: ConcreteMediator(); virtual ~ConcreteMediator(); virtual void WidgetChanged(Widget*); protected: virtual void CreateWidgets(); private: Button* _add; Button* _delete; ListBox* _sourcelist; ListBox* _destinationlist; TextArea* _currenttext; }; void ConcreteMediator::CreateWidgets() { _add = new Button(this); _delete = new Button(this); _sourcelist = new ListBox(this); _destination = new ListBox(this); _currenttext = new TextArea(this); //fill the source listbox _add.EnableButton(false); _delete.EnableButton(false); } 7.9.4 应用举例 void ConcreteMediator::WidgetChanged(Widget* theChangeWidget) { if(theChangedWidget == _add) { _destination.AddListItem(_currenttext.GetText()); } if(theChangedWidget == _delete) { _destination.DeleteListItem(_destination.GetCurrentListItem()); } if(theChangedWidget == _sourcelist) { _currenttext.SetText(_sourcelist-GetSelection()); _add.EnableButton(true); } if(theChangedWidget == _destinationlist) { _delete.EnableButton(true); } } 7.9.5 效果分析 1)减少了子类生成 中介者将原本分布于多个对象间的行为集中到了一起,因此有可能使由同一个基类派生出的不同子类的相异之处被剥离出来,也就无需派生不同的子类。例如:两个Button类派生的按钮子类唯一的不同是Clicked方法,当中介者类将这两个按钮子类的Clicked方法都集中到自己的方法中后,这两个按钮子类就完全相同也就无需派生子类了。减少了子类的派生也就增加了系统的可复用性。 2)松耦合 中介者模式将各对象解耦,各对象之间是松耦合的,可以独立改变和复用各Colleague类。 7.9.5 效果分析 3)简化了对象间关联 用Mediator和个Colleague间的一对多的交互来代替各Colleague间多对多的交互。一对多的关系更易于理解、维护和扩展。 4)封装变化 中介者在封装交互的同时也将变化封装起来,交互关系的变化将只影响Mediator类的代码,各Colleague类的代码无需修改,增加或删除Colleague对象也只需要修改Mediator类的代码。封装变化简化了系统的维护工作。 7.9.5 效果分析 5)控制集中化 中介者模式将交互的复杂性变为中介者的复杂性。因为中介者封装了所有的交互,它可能变成一个难于维护的庞大的对象。为了控制中介者的规模,应尽量使用各对象完成自己的任务,中介者只处理对象间的交互,也就是说,在将对象间交互向中介者集中时,尽量不要将对象能独立处理的部分也集中到中介者中。 6)中介者难复用 中介者需要和每个Colleague对象交互,要处理系统中所有的交互,因此和系统的耦合度较大,比较难在系统间复用。 7.10 策略模式(Strategy) 一.策略模式的由来 二.策略模式的意图及适用性 三.策略模式的结构及参与者 四.应用举例 五.效果说明 7.1

文档评论(0)

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

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

1亿VIP精品文档

相关文档