补充:设计模式.ppt

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

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 软件工程 * 同一个通信枢纽: 下面的顺序图显示了这些对象是如何协同,共同处理下面列表(list box)项目的变化的。 aClient director aButton director aFontDialogDirector aListBox director aEntryField director 软件工程 * 当选取了下面列表(list box)的项目后,会向文字输入栏传送下列事件: list box通知director说状态有变 director从list box取得选取项目的信息 director将取得的信息传送给文字输入栏 aClient aFontDialogDirector aListBox aEntryField ShowDialog() WidgetChanged() GetSelection() SetText() 软件工程 * 因文字输入栏显示出这些信息,director就将激活按钮(如“demibold”或“oblique”等) 视觉元件只能通过director来间接交互,它们只认得director。而且,系统行为全都集中在一个对象身上,只要扩充或换掉它,就能改变系统行为。 下面显示加入FontDialogDirector后的类结构。 抽象类DialogDirector负责定义对话框的整体行为。 ShowDialog()可将对话框显示在屏幕上 CreateWidgets()可在对话框内建立视觉元件 软件工程 * WidgetChanged()使得视觉元件可以通知director说状态有变。 DialogDirector的子类中的操作CreateWidgets()可产生适当的视觉元件组,而WidgetChanged()可处理状态变化。 DialogDirector ShowDialog() CreateWidgets() WidgetChanged(Widget) director-widgetChanged(this) Widget Changed() director EntryField SetText() ListBox GetSelection() FontDialogDirector CreateWidgets() WidgetChanged(Widget) field list 软件工程 * 适用性 如果有一组对象,它们的交互虽然很明确,但太复杂,互相纠缠,且难以理解时 当某个对象与太多的其他对象通信,复用变得很困难时 想对散布在多个类中的行为进行定制,但又不想派生出太多的子类时 结构 Mediator ConcreteMediator Colleague ConcreteColleague1 ConcreteColleague2 mediator 软件工程 * 典型的对象结构为: 5) 协作 Colleaque向Mediator对象收发信息,Medaitor则将信息传送给适当的Colleaque对象(一个或多个),协调整体行为。 aColleague mediator aConcreteMediator aColleague mediator aColleague mediator aColleague mediator aColleague mediator 软件工程 * 4. Observer (观察者) 意图 该模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知,并自动更新。 动机 例如,许多GUI软件包都将数据显示部分与应用底层的数据表示分开,以利于分别复用。但这些类也能合作,如计算表和直方图都是针对同一数据对象的两种不同表示方式。计算表和直方图互相不知道彼此,但它们表现出的行为却是相关的,只要计算表中数据变化,直方图马上就会随之改变。 软件工程 * 这说明:计算表和直方图都依赖于数据对象,因此数据一有变化,就应通知它们。Observer模式就是描述如何建立这种关系。 软件工程 * Observer模式的对象分主题 (subject) 和观察者(observer)两种。一个主题可以有

文档评论(0)

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

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

1亿VIP精品文档

相关文档