03_OOAD-12设计模式2-结构型汇编.ppt

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

6.组合模式 组合模式(Composite) 适用性 适合用来处理一类具有“容器特征”的对象,它们既充当对象,又可以作为容器来包含其它多个对象; 需要区分节点(Node)是叶子节点还是分支节点,并对两类节点分别添加所需的方法; 客户端不需要对组合判断节点类型,体现了对操作的透明性; 如果从面向过程的角度思考,组合模式通过递归原理实现了树结构(组合对象)的深度优先遍历。 结构型模式 结构型模式的讨论 Adapter和Bridge都涉及到从自身以外的接口向另一对象发送请求,Adapter是为了解决两个接口不匹配,Bridge则是对抽象接口与其实现部分进行桥接。Adapter通常在类设计好之后实施,Bridge则在类设计之前实施。 Adapter使两个已经存在的接口协同工作,并不定义新的接口,而Facade则定义了一个新的接口。 Composite和Decorator都是基于递归组合来组织可变数目的对象,但Composite的目的是使多个相关对象能够被当作一个对象来处理,Decorator的目的则是不需要生成子类即可给对象添加职责。 Decorator和Proxy都描述了为对象提供间接引用,但Proxy不能动态地添加或分离性质,也不是为递归组合而设计的,是由实体完成关键功能,Proxy控制其访问,而Decorator则是在组件基本功能之外完成附加的功能。 * 设计模式 Design Patterns 概述 设计模式编目(经典:23种) 范围 目的 创建型 结构型 行为型 类 Factory Method Adapter Interpreter Template Method 对象 Abstract Factory Builder Prototype Singleton Adapter Bridge Composite Decorator Facade Flyweight Proxy Chain of Responsibility Command Iterator Mediator Memento Observer State Strategy Visitor 结构型模式 结构型模式的目的 结构型模式涉及到如何组合类和对象以获得更大的结构。 提供一种方式定义类和对象: 采用继承机制实现接口; 以直接引用对象的方式组合到新类。 Bridge(桥接) Decorator(装饰) Adapter(适配器) Fa?ade(外观) Proxy(代理) Composite(组合) Flyweight(享元) 1.适配器模式 意图:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适用性 你想使用一个已经存在的类,而它的接口不符合你的需求。 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。 例:Triangle与Quad协同工作。 (仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。 类适配器 角色3:源 实现已有的适配接口 角色1:目标 所期待得到的接口 角色2:目标适配器 适配器把源接口转换成目标接口。显然,这一角色不可以是接口,而必须是具体类。 对象适配器 角色3:源 实现已有的适配接口 角色1:目标 所期待得到的接口 角色2:目标适配器 包装(Wrapper)类Adapter,这个包装类包装了一个Adaptee的实例,通过引用使用源的接口。 2.装饰模式 Decorator(装饰) 对象结构型模式 意图 动态地给一个对象添加一些额外的功能。 采用对象组合而并非继承的方式,强调扩展接口。 适用性 在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。 不适合使用子类进行功能扩展的时候:如,扩展功能需要的子类太多,造成子类数目呈爆炸性增长。 2.装饰模式 角色3:装饰者抽象类 维持一个指向抽象构件 的引用,可以对被装饰者 进行装饰。 角色1:抽象构件 被装饰对象的基类 角色4:具体装饰者 负责向具体的被装饰者(角色2)添加功能。 也可以向其它的装饰者(角色4本身)添加功能。 角色2:具体构件 具体被装饰者, 可以给这些对象 添加功能 模拟超市购物单的打印功能: 主要内容:商品的名称、数量、单价、总价。 其它信息: 收银员信息(编号等,header) 欢迎辞(header) 促销广告(Footer) 日期(Footer) 其中,“其它信息”的格式及打印位置并不固定。 2.装饰模式 购物单装饰者抽象类 ListDecorator #ShoppingList printInfo() 购物单抽象类 ShoppingList printIn

文档评论(0)

2232文档 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档