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

10构造型设计模式教学.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
构造型的设计模式 姜中华 造型模式 创建型模式抽象了实例化过程。它们帮助一个系统独立于如何创建、组合和表示它的那些对象。 类创建模式使用继承改变被实例化的类 对象创建模式将实例化委托给另一个对象。 随着系统变得更依赖复合(非继承),创建型模式变得更重要。模式使得从对一组固定行为的硬编码(hard-coding)转移为定义一组基本行为集。 构造型模式 创建型模式抽象了实例化过程。它们帮助一个系统独立于如何创建、组合和表示它的那些对象。 类创建模式使用继承改变被实例化的类 对象创建模式将实例化委托给另一个对象。 随着系统变得更依赖复合(非继承),创建型模式变得更重要。模式使得从对一组固定行为的硬编码(hard-coding)转移为定义一组基本行为集。 构造型模式的特点 模式允许用结构和功能差异很大的“产品”对象配置一个系统。配置可以是静态的,也可以是动态的。共同特点: 将系统使用的具体类的信息封装起来 隐藏了具体类实例的创建和组合过程 整个系统使用由抽象类所定义的接口 模式使得对象的创建具有很大的灵活性 常用的构造型模式 创建型模式是紧密相关的,常用的创建型模式如下: Prototype Abstract Factory Builder Prototype Singleton Abstract Factory 抽象工厂模式 Abstract Factory 目的:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类 举例:考虑一个支持多种视觉标准的GUI工具包,如Motif和Presentation Manager。不同视感标准为“窗口组件” (滚动条;窗口和按钮等)定义了不同的外观和行为。为保证视觉标准的可移植性,一个应用不应为特定的视觉外观硬编码其窗口组件。在整个应用中实例化特定视感风格的窗口组件类日后将很难改变视感风格。 示例的解决方法 定义一个抽象类WidgetFactory,它声明了用来创建每一类基本窗口组件的接口。每一类窗口组件都有一个抽象类,而具体子类则实现了窗口组件的特定视觉风格。 对每个抽象窗口组件类,WidgetFactory都有一个返回该类对象的操作(方法)。 客户调用这些操作来获得窗口组件实例,但客户并不知道正在使用的是哪些具体类。这样客户就不依赖于某特定的视觉风格。 示例的解决方法 定义一个抽象类WidgetFactory,它声明了用来创建每一类基本窗口组件的接口。每一类窗口组件都有一个抽象类,而具体子类则实现了窗口组件的特定视觉风格。 对每个抽象窗口组件类,WidgetFactory都有一个返回该类对象的操作(方法)。 客户调用这些操作来获得窗口组件实例,但客户并不知道正在使用的是哪些具体类。这样客户就不依赖于某特定的视觉风格。 类框图 产生的代码(AbstractFactory) ConcreteFactory/MotifWidgetFactory AbstractProduct ConcreteProduct/Window Client Abstract Factory的适应性 系统要独立于它的产品的创建、组合和表示时 系统要由多个产品系列中之一来配置时 当要强调一系列相关的产品对象的设计以便进行联合使用时 当你提供一个产品类库,而只想显示它们的接口而不是实现时 Abstract Factory的结构 Abstract Factory的适应性 系统要独立于它的产品的创建、组合和表示时 系统要由多个产品系列中之一来配置时 当要强调一系列相关的产品对象的设计以便进行联合使用时 当你提供一个产品类库,而只想显示它们的接口而不是实现时 Abstract Factory的优缺点 它分离了具体的类,帮你控制应用创建的对象的类 它使得易于交换产品系列一个具体工厂类在一个应用中仅出现一次—即在它初始化的时候 它有利于产品的一致性,应用一次只能使用同一系列中的对象 难以支持新种类的产品,这将涉及Abstract Factory类及其所有子类的改变 要求每个产品系列都要有一个新的具体工厂子类,其差别很小 Factory Method 工厂方法 Factory Method 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类 框架使用抽象类定义和维护对象之间的关系,这些对象的创建通常也由框架负责 Factory Method应用举例 考虑这样一个应用框架,它可以向用户显示多个文档。在这个框架中,两个主要的抽象是类Application和Document。这两个类都是抽象的,客户必须通过它们的子类来做与具体应用相关的实现。例如,为创建一个绘图应用,我们定义类Drawing Application和Drawing Docu ment Applicati

文档评论(0)

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

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

1亿VIP精品文档

相关文档