第六章 软件体结构与设计模式.ppt

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

中介者模式 (1) 目的:用一个中介对象来封装一系列复杂对象的交互情景。中介者通过阻止各个对象显式地相互引用来降低它们之间的耦合,使得人们可以独立地改变它们之间的交互。 (2) 思路:以GUI系统的对话框为例,对话框中会布置许多窗口组件,如按钮、菜单、文字输入栏等。对话框中各窗口组件之间往往相互牵连。 可以将这些窗口组件的集体行为封装成一个中介者(mediator)对象。中介者负责居中指挥协调一组对象之间的交互行为,避免互相直接引用。这些对象只认得中介者,因而可降低交互行为的数目。 中介者模式 例如,可用FontDialogDirector当作对话框内各窗口组件之间的中介者。FontDialogDirector对象认得所有组件,协调彼此之间的交互,如同一个通信枢纽,如图所示。 中介者模式 描述mediator作用的顺序图 。 中介者模式 下图显示了加入FontDialogDirector后的类结构。 中介者模式 (3) 结构:图(a)给出了中介者的类结构,图(b)给出了典型的对象结构。 (a) (b) 中介者模式 (4) 参与者职责 a) 中介者(Mediator):定义与各个同事(Colleague)对象通信的接口。 b) 具体中介者(ConcreteMediator):协调各个同事对象,实现协作行为;了解并维护各个同事对象。 c) 同事类(Colleague classes):这些同事类的对象都了解中介者;一个同事对象与另一个同事对象之间的通信都需要通过中介者来间接实现。 (5) 协作:同事向中介者对象发送或接收请求,中介者则将请求传送给适当的同事对象(一个或多个),协调整体行为。 观察者模式 (1)目的:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知,并被自动更新。 (2)思路:例如,许多GUI软件包都将数据显示部分与应用程序底层的数据表示分开,以利于分别复用。但这些类也能合作,如图所示的计算表和直方图都是针对同一数据对象的两种不同表示方式。 观察者模式 (3) 结构:Observer模式的结构如图所示。 观察者模式 (4) 参与者职责 a) 主题(Subject):认得它的观察者。任意数目的观察者对象均可订阅一个主题。另外,提供一个连接观察者对象和解除连接的接口。 b) 观察者(Observer):定义了一个自我更新的接口。一旦发现主题有变时借助接口通知自己随之改变。 c) 具体主题(ConcreteSubject):存储具体观察者对象关心的状态;当状态改变时向它的观察者发送通知。 d) 具体观察者(ConcreteObserver):维持一个对具体主题对象的引用;存储要与主题一致的状态;实现观察者的自我更新接口,确保自己的状态与主题的状态一致。 观察者模式 (5) 协作:当具体主题发生会导致观察者的状态不一致的情况时,就会主动通知所有该通知的观察者。当具体观察者收到通知后,向主题询问,根据所得信息使自己的状态与主题的状态保持一致。下图给出了一个主题和两个观察者对象之间的交互情况。 小结 本章内容比较抽象,属于软件设计中较高级的技术。 对于这些内容,需要在实践中反复体会才能逐步加深理解。 至少应搞清楚软件体系结构是研究什么样的问题,模式、风格、框架等概念的区别。 对一些常见的体系结构模式如三层结构(C/S、B/S)应该有较深入的理解。 尽可能多地理解设计模式及它们在实际应用中的作用,工厂模式总应该能搞清楚了吧? * * 当主程序/子程序体系结构的构件被分布在网络上的多个计算机中时,我们称主程序对子程序的调用为远程过程调用。这种系统的目标是要通过将运算分布到多台计算机上来充分利用多台处理器,最终达到提高系统性能的目的。 * 在企业和电子商务系统的开发和集成中,产生了多种经过较大调整、关注不同复杂度的J2EE技术。这些技术支持MVC模式的实现,如Jakarta Struts。有些技术还扩展到了企业服务,如Spring框架技术和应用服务器(如Jboss、Websphere应用服务器)。在应用服务器中,与JMS实现集成则将应用领域扩展到电子商务。 * 抽象类DialogDirector负责定义对话框的整体行为,客户调用ShowDialog() 操作可将对话框显示在屏幕上,DialogDirector的抽象操作CreateWidgets() 可在对话框内建立窗口组件,另一个抽象操作WidgetChanged()由窗口组件调用,用以通知它的director说它们的状态已变化了。 视图对象 视图对象代表GUI对象,并且以用户需要的格式表示模型状态,是交互系统与外界的接口。 视图对象可以包含子视图,子视图用于显示模型的不同部分。 通常,每个视图对象对应一个控制器对

文档评论(0)

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

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

1亿VIP精品文档

相关文档