网站大量收购闲置独家精品文档,联系QQ:2885784924

第14章 设计模式.ppt

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
14.1 为什么要使用设计模式 □ 面向对象设计时要考虑许多因素,如封装性、粒度(granularity)大小、依赖关系、灵活性、性能、可重用性等。如何确定系统中的类以及类之间的关系?什么是好的设计和不好的设计?哪些是设计时要努力达到的目标?这些都是软件设计中不容易掌握的问题。 14.1 为什么要使用设计模式 □ 要真正掌握软件设计,必须研究其它软件设计大师的设计,这些设计中包含了许多设计模式(design pattern)。 14.1 为什么要使用设计模式 在软件开发中使用设计模式有以下好处: ·简化并加快设计。 ·方便设计者之间的通信。 ·降低风险。 ·有助于转到OO技术。 14.2 设计模式的历史 □ 设计模式这个概念最早是由美国伯克利大学教授克里斯托夫·亚历山大提出来的。在20世纪70年代后期,亚历山大出版了基本有关建筑学的书。他在《模式语言》一书中提出了设计模式的思想,讨论了设计模式在建筑学中的作用。 14.2 设计模式的历史 □ 在80年代,很多计算机开发人员根据亚历山大提出的设计模式思想开始在软件开发中有意识地使用设计模式,于是设计模式开始在计算机界流行起来。 14.3 设计模式的分类 □ 按设计模式的目的划分: ① 创建型模式 ② 结构型模式 ③ 行为型模式 □ 按设计模式的范围划分: ① 类设计模式 ② 对象设计模式 Facade设计模式 Facade设计模式 1 意图 为子系统中的一组接口提供一个一致的界面,Fa?ade模式定义了一个高层的接口,这个接口使得这一子系统更加容易使用。 Facade设计模式 2 动机 将一个系统划分为若干个子系统有利于降低系统的复杂性。一个常见的设计目标是使子系统之间的通信和相互依赖关系达到最小。达到该目标的途径之一就是引入一个Fa?ade对象,它为子系统中较一般的设施提供了一个单一而简单的界面。 Facade设计模式 3 适用性 ① 为一个复杂子系统提供一个简单接口时。 ② 客户程序与抽象类的实现部分存在很大的依赖性。 ③ 当你需要构建一个层次结构的子系统时。 Facade设计模式 4 参与者 Fa?ade ------知道哪些子系统负责处理请求 ------将客户的请求代理给适当的子系统对象 Subsystem classes -----实现子系统的功能。 ------处理由Fa?ade对象指派的任务。 ------没有fa?ade的任何相关信息,即没有指向fa?ade的指针 Facade设计模式 5 协作 ① 客户程序通过发送请求给Fa?ade的方式与子系统通讯,Facade将这些消息转发给适当的子系统对象。 ② 使用Fa?ade的客户程序不需要直接访问子系统对象。 Facade设计模式 6 优点 ① 对客户屏蔽子系统组件 ② 实现了子系统与客户之间的松耦合关系 ③ 如果应用需要,它并不限制它们使用子系统类 AbstractFactory设计模式 1 意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 AbstractFactory设计模式 2 动机 考虑一个支持多种视感(look-and-feel)标准的用户界面工具包,例如Motif和Presentation Manager。不同的视感风格为诸如滚动条、窗口和按钮等用户界面“窗口组件”定义不同的外观和行为。为保证视感风格标准间的可移植性,一个应用不应该为一个特定的视感外观硬编码它的窗口组件。在整个应用中实例化特定视感风格的窗口组件将使得以后很难改变视感风格。 AbstractFactory设计模式 □ 为解决这一问题我们可以定义一个抽象的WidgetFactory类,这个类声明了一个用来创建每一类基本窗口组件的接口。每一类窗口组件都有一个抽象类,而具体子类则实现了窗口组件对象的操作。客户调用这些操作以获得窗口组件实例,但客户并不知道他们正在使用的是哪些具体类。这样客户就不依赖于一般的视感风格,如下页图所示。 AbstractFactory设计模式 AbstractFactory设计模式 □ 每一种视感标准都对应与一个具体的WidgetFactory子类。每一子类实现那些用于创建合适视感风格的窗口组件的操作。例如,MotifWidgetFactory的CreateScrollBar操作实例化并返回一个Motif滚动条,而相应的PMWidgetFactory操作返回一个Presentation Manager的滚动条。客户仅通过WidgetFactory接口创建窗口组件,他们并不知道哪些类实现了特定视感风格的窗口组件。换言之,客户仅与抽象类定义的接口交互,而不使用

文档评论(0)

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

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

1亿VIP精品文档

相关文档