- 1、本文档共124页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)两种。一个主题可以有
您可能关注的文档
- 茂盛物流公司简介.pptx
- 蓉西新城冬雨季施工方案(最终).doc
- 蒂绅出差报告.ppt
- 薄透镜ppt.ppt
- 蓝光原盘DIY音轨、字幕教程.docx
- 薛梅求职网站详细设计.doc
- 薪酬体系建设理念分享(一).pptx
- 薪酬管理复习提纲2013.doc
- 虚拟仪器与硬件在环第四讲.pptx
- 薪酬福利管理(第一章).ppt
- 2023-2024学年广东省深圳市龙岗区高二(上)期末物理试卷(含答案).pdf
- 2023-2024学年贵州省贵阳市普通中学高一(下)期末物理试卷(含答案).pdf
- 21.《大自然的声音》课件(共45张PPT).pptx
- 2023年江西省吉安市吉安县小升初数学试卷(含答案).pdf
- 2024-2025学年广东省清远市九校联考高一(上)期中物理试卷(含答案).pdf
- 广东省珠海市六校联考2024-2025学年高二上学期11月期中考试语文试题.pdf
- 2024-2025学年语文六年级上册第4单元-单元素养测试(含答案).pdf
- 2024-2025学年重庆八中高三(上)月考物理试卷(10月份)(含答案).pdf
- 安徽省安庆市潜山市北片学校联考2024-2025学年七年级上学期期中生物学试题(含答案).pdf
- 贵州省部分校2024-2025学年九年级上学期期中联考数学试题(含答案).pdf
文档评论(0)