第04章 结构型模式(上)

上传人:资****亨 文档编号:133872857 上传时间:2020-05-31 格式:PPT 页数:27 大小:1.47MB
返回 下载 相关 举报
第04章 结构型模式(上)_第1页
第1页 / 共27页
第04章 结构型模式(上)_第2页
第2页 / 共27页
第04章 结构型模式(上)_第3页
第3页 / 共27页
第04章 结构型模式(上)_第4页
第4页 / 共27页
第04章 结构型模式(上)_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《第04章 结构型模式(上)》由会员分享,可在线阅读,更多相关《第04章 结构型模式(上)(27页珍藏版)》请在金锄头文库上搜索。

1、第4章结构型模式 上 作者 程细柱韶关学院信息科学与工程学院 Java面向对象程序设计 ISDN 9787564740634 作者 程细柱 电子科技大学出版社 2 内容简介 本章教学目标 了解结构型模式的特点与分类 理解代理模式 适配器模式 桥接模式的定义与特点 掌握代理模式 适配器模式 桥接模式的结构与实现 学会使用这三种设计模式开发应用程序 明白这三种设计模式的扩展应用 本章重点内容 结构型模式的定义 特点和分类方法 代理模式的特点 结构 应用场景与应用方法 适配器模式的特点 结构 应用场景与应用方法 桥接模式的特点 结构 应用场景与应用方法 Java面向对象程序设计 ISDN 97875

2、64740634 作者 程细柱 电子科技大学出版社 3 4 1结构型模式概述 结构型模式描述如何将类或对象按某种布局组成更大的结构 它分为类结构型模式和对象结构型模式 前者采用继承机制来组织接口和类 后者采用组合或聚合来组合对象 由于组合关系或聚合关系比继承关系耦合度低 满足 合成复用原则 所以对象结构型模式比类结构型模式具有更大的灵活性 结构型模式分为以下7种 代理 Proxy 模式 为某对象提供一种代理以控制对该对象的访问 即客户端通过代理间接地访问该对象 从而限制 增强或修改该对象的一些特性 适配器 Adapter 模式 将一个类的接口转换成客户希望的另外一个接口 使得原本由于接口不兼容

3、而不能一起工作的那些类能一起工作 桥接 Bridge 模式 将抽象与实现分离 使他们可以独立的变化 它是用组合关系代替继承关系来实现 从而降低了抽象和实现这2个可变维度的耦合度 Java面向对象程序设计 ISDN 9787564740634 作者 程细柱 电子科技大学出版社 4 4 1结构型模式概述 续 装饰 Decorator 模式 动态的给对象增加一些职责 即增加其额外的功能 外观 Facade 模式 为多个复杂的子系统提供一个一致的接口 使这些子系统更加容易被访问 享元 Flyweight 模式 运用共享技术来有效地支持大量细粒度对象的复用 组合 Composite 模式 将对象组合成树

4、状层次结构 使用户对单个对象和组合对象具有一致的访问性 以上7种结构型模式 除了适配器模式分为类结构型模式和对象结构型模式2种 其他的全部属于对象结构型模式 Java面向对象程序设计 ISDN 9787564740634 作者 程细柱 电子科技大学出版社 5 4 2代理 Proxy 模式 4 2 1模式的定义与特点定义 由于某些原因需要给某对象提供一个代理以控制对该对象的访问 这时 访问对象不适合或者不能直接引用目标对象 代理对象作为访问对象和目标对象之间的中介 优点 1 代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用 2 代理对象可以扩展目标对象的功能 3 代理模式能将客

5、户端与目标对象分离 在一定程度上降低了系统的耦合度 缺点 1 在客户端和目标对象增加一个代理对象 会造成请求处理速度变慢 2 增加了系统的复杂度 Java面向对象程序设计 ISDN 9787564740634 作者 程细柱 电子科技大学出版社 6 4 2代理 Proxy 模式 续 4 2 2模式的结构与实现1 模式的结构代理模式的主要角色有 抽象主题 Subject 类 通过接口或抽象类声明真实主题和代理对象实现的业务方法 真实主题 RealSubject 类 实现了抽象主题中的具体业务 是代理对象所代表的真实对象 是我们最终要引用的对象 代理 Proxy 类 提供了与真实主题相同的接口 其内

6、部含有对真实主题的引用 它可以访问或控制或扩展真实主题的功能 其结构图如下 Java面向对象程序设计 ISDN 9787564740634 作者 程细柱 电子科技大学出版社 7 4 2代理 Proxy 模式 续 4 2 2模式的结构与实现1 模式的结构 续 结构图如右 2 模式的实现 实现代码见附件 Java面向对象程序设计 ISDN 9787564740634 作者 程细柱 电子科技大学出版社 8 4 2代理 Proxy 模式 续 4 2 3模式的应用实例 例4 1 韶关 天街e角 公司是一家婺源特产公司的代售公司 用代理模式实现之 分析 本例中的 婺源特产公司 经营婺源特产 它是真实主题

7、而韶关 天街e角 公司是婺源公司的代理 它可以调用婺源公司的相关方法 而且它可以增加一些额外的处理 如包装或加价等 客户端通过 天街e角 公司间接访问 婺源公司 的产品 右边是其结构图 注 程序代码见附件 Java面向对象程序设计 ISDN 9787564740634 作者 程细柱 电子科技大学出版社 9 4 2代理 Proxy 模式 续 4 2 3模式的应用实例 例4 1 韶关 天街e角 公司是一家婺源特产公司的代售公司 用代理模式实现之 右边是程序的运行结果 Java面向对象程序设计 ISDN 9787564740634 作者 程细柱 电子科技大学出版社 10 4 2代理 Proxy 模式

8、 续 4 2 4模式的应用场景1 远程代理 这种方式通常是为了隐藏目标对象存在于不同地址空间的事实 方便客户端访问 例如用户申请某些网盘空间时 会在用户的文件系统中建立一个虚拟的硬盘 用户访问它实际访问的是网盘空间 2 虚拟代理 这种方式通常用于要创建的目标对象开销很大时 比如下载一幅很大的图像需要很长时间 因某种计算比较复杂而短时间无法完成 这时可以先用小比例的虚拟代理替换真实的对象 消除用户对服务器慢的感觉 3 安全代理 这种方式通常用于控制不同种类客户对真实对象的访问权限 4 智能指引 主要用于当调用目标对象时 代理附加一些额外的处理功能 比如增加计算真实对象的引用次数的功能 这样当该对

9、象没有引用时 就可以自动释放它 5 延迟加载 指为了提高系统的性能 延迟对目标的加载 例如 Hibernate中就存在属性的延迟加载和关联表的延时加载 Java面向对象程序设计 ISDN 9787564740634 作者 程细柱 电子科技大学出版社 11 4 2代理 Proxy 模式 续 4 2 5模式的扩展前面介绍是静态代理模式 存在两个缺点 1 真实主题与代理主题一一对应 增加真实主题也要增加代理 2 设计代理以前真实主题必须事先存在 不太灵活 而采用动态代理模式可以解决以上问题 其结构图如右 Java面向对象程序设计 ISDN 9787564740634 作者 程细柱 电子科技大学出版社

10、 12 4 3适配器 Adapter 模式 4 3 1模式的定义与特点定义 将一个类的接口转换成客户希望的另外一个接口 使得原本由于接口不兼容而不能一起工作的那些类能一起工作 适配器模式分为类结构型模式和对象结构型模式2种 优点 1 客户端通过适配器可以透明地调用目标接口 2 程序员不需要修改原有代码而重用现有的适配者类 3 将目标类和适配者类解耦 解决了目标类和适配者类接口不一致的问题 缺点 对于类适配器来说 更换适配器的实现过程比较复杂 Java面向对象程序设计 ISDN 9787564740634 作者 程细柱 电子科技大学出版社 13 4 3适配器 Adapter 模式 续 4 3 2

11、模式的结构与实现1 模式的结构适配器模式包含以下主要角色 目标 Target 接口 当前系统业务所期待的接口 它可以是抽象类或接口 适配者 Adaptee 类 是被访问和适配的现存组件库中的组件接口 适配器 Adapter 类 它一个转换器 通过继承或引用适配者的对象 把适配者接口转换成目标接口 让客户按目标接口的格式访问适配者 适配器模式分为 类适配器模式和对象适配器模式2种 Java面向对象程序设计 ISDN 9787564740634 作者 程细柱 电子科技大学出版社 14 4 3适配器 Adapter 模式 续 a 类适配器模式 其实现代码见附件 结构图如下 Java面向对象程序设计

12、ISDN 9787564740634 作者 程细柱 电子科技大学出版社 15 4 3适配器 Adapter 模式 续 b 对象适配器模式 其实现代码见附件 结构图如下 Java面向对象程序设计 ISDN 9787564740634 作者 程细柱 电子科技大学出版社 16 4 3适配器 Adapter 模式 续 4 3 3模式的应用实例 例4 2 用适配器模式模拟新能源汽车的发动机 分析 新能源汽车的发动机有电能发动机和光能发动机等 各种发动机的驱动方法不同 客户端希望用统一的发动机驱动方法drive 访问这两种发动机 所以要为这些发动机定义适配器 右边是其结构图 注 程序代码见附件 Java面

13、向对象程序设计 ISDN 9787564740634 作者 程细柱 电子科技大学出版社 17 4 3适配器 Adapter 模式 续 4 3 4模式的应用场景适配器模式通常适用以下场景 1 以前开发的系统存在满足新系统功能需求的类 但其接口同新系统的接口不一致 2 使用第三方提供的组件 但组件接口定义和自己要求的接口定义不同 Java面向对象程序设计 ISDN 9787564740634 作者 程细柱 电子科技大学出版社 18 4 3适配器 Adapter 模式 续 4 3 5模式的扩展适配器模式可扩展为双向适配器模式 双向适配器类既可以把适配者接口转换成目标接口 也可以把目标接口转换成适配者

14、接口 右边是其结构图 注 程序代码见附件 Java面向对象程序设计 ISDN 9787564740634 作者 程细柱 电子科技大学出版社 19 4 4桥接 Bridge 模式 4 4 1模式的定义与特点定义 将抽象与实现分离 使他们可以独立的变化 它是用组合关系代替继承关系来实现 用于多个维度变化的实例 如图形既可按形状分 又可按颜色分 优点 1 由于抽象与实现分离 所以扩展能力强 2 其实现细节对客户透明 缺点 由于聚合关系建立在抽象层 要求开发者针对抽象化进行设计与编程 这增加了系统的理解与设计难度 Java面向对象程序设计 ISDN 9787564740634 作者 程细柱 电子科技大

15、学出版社 20 4 4桥接 Bridge 模式 续 4 4 2模式的结构与实现1 模式的结构桥接模式包含以下主要角色 抽象化 Abstraction 角色 定义抽象类 并包含一个对实现化对象的引用 扩展抽象化 RefinedAbstraction 角色 是抽象化角色的子类 实现父类中的业务方法 并通过组合关系调用实现化角色中的业务方法 实现化 Implementor 角色 定义实现化角色的接口 供扩展抽象化角色调用 具体实现化 ConcreteImplementor 角色 给出实现化角色接口的具体实现 Java面向对象程序设计 ISDN 9787564740634 作者 程细柱 电子科技大学出

16、版社 21 4 4桥接 Bridge 模式 续 4 4 2模式的结构与实现1 模式的结构 续 结构图如右 2 模式的实现 实现代码见附件 Java面向对象程序设计 ISDN 9787564740634 作者 程细柱 电子科技大学出版社 22 4 4桥接 Bridge 模式 续 4 4 3模式的应用实例 例4 3 用桥接模式模拟女士皮包的选购 分析 女士皮包有很多种 可以按用途分 按皮质分 按品牌分 按颜色分 按大小分等 存在多个维度的变化 所以采用桥接模式来实现女士皮包的选购比较合适 本实例按用途分可选钱包 Wallet 和挎包 HandBag 按颜色分可选黄色 Yellow 和红色 Red 右边是其结构图 注 程序代码见附件 Java面向对象程序设计 ISDN 9787564740634 作者 程细柱 电子科技大学出版社 23 4 4桥接 Bridge 模式 续 4 4 3模式的应用实例 例4 3 用桥接模式模拟女士皮包的选购 右边是程序的运行结果 Java面向对象程序设计 ISDN 9787564740634 作者 程细柱 电子科技大学出版社 24 4 4桥接 Bridge 模式

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号