设计模式浅谈(24种)ppt课件

上传人:资****亨 文档编号:133117759 上传时间:2020-05-24 格式:PPT 页数:140 大小:1.53MB
返回 下载 相关 举报
设计模式浅谈(24种)ppt课件_第1页
第1页 / 共140页
设计模式浅谈(24种)ppt课件_第2页
第2页 / 共140页
设计模式浅谈(24种)ppt课件_第3页
第3页 / 共140页
设计模式浅谈(24种)ppt课件_第4页
第4页 / 共140页
设计模式浅谈(24种)ppt课件_第5页
第5页 / 共140页
点击查看更多>>
资源描述

《设计模式浅谈(24种)ppt课件》由会员分享,可在线阅读,更多相关《设计模式浅谈(24种)ppt课件(140页珍藏版)》请在金锄头文库上搜索。

1、设计模式DesignPatterns 准备 理解面向对象设计的原则 开放 封闭原则 是说软件实体 类 模块 函数等等 应该可以扩展 但是不可修改 里氏代换原则 子类型必须能够替换掉它们的父类型 依赖倒转原则 A 高层模块不应该依赖低层模块 两个都应该依赖抽象 B 抽象不应该依赖细节 细节应该依赖抽象 请参考 面向对象设计的原则 2 概述 导致重新设计的一般原因通过显式指定一个类来创建对象对特殊操作的依赖对硬件和软件平台的依赖对对象表示和实现的依赖对算法的依赖紧耦合通过生成子类来扩充功能不能方便地对类进行修改 3 概述 4 原则一 对接口编程 而不是对实现编程 原则二 优先使用对象组合 而不是继

2、承 概述 什么是设计模式设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述 每一个模式描述了一个在我们周围不断重复发生的问题 以及该问题的解决方案的核心 这样 你就能一次又一次地使用该方案而不必做重复劳动 设计模式的内容模式名称Patternname问题Problem解决方案Solution效果Consequences 5 概述 设计模式编目 设计模式之间的关系 7 创建型模式 创建型模式的目的使系统独立于如何创建 组合和表示对象 类创建型模式使用继承改变被实例化的类 对象创建型模式将实例化委托给另一个对象 8 AbstractFactory Builder Factor

3、yMethod Prototype Singleton 创建型模式 三种Factory模式 SimpleFactory 简单工厂 模式 专门定义一个类来负责创建其它类的实例 被创建的实例通常都具有共同的父类 FactoryMethod 工厂方法 模式 将对象的创建交由父类中定义的一个标准方法来完成 而不是其构造函数 究竟应该创建何种对象由具体的子类负责决定 AbstractFactory 抽象工厂 模式 提供一个共同的接口来创建相互关联的多个对象 9 创建型模式 FactoryMethod 工厂方法 类创建型模式意图定义一个用于创建对象的接口 让子类决定实例化哪一个类 FactoryMetho

4、d使一个类的实例化延迟到其子类 适用性当一个类不知道它所必须创建的对象的类的时候 当一个类希望由它的子类来指定它所创建的对象的时候 当类将创建对象的职责委托给多个帮助子类中的某一个 并且你希望将哪一个帮助子类是代理者这一信息局部化的时候 10 创建型模式 FactoryMethod 工厂方法 11 创建型模式 FactoryMethod 工厂方法 效果用工厂方法在类中创建对象比直接创建更灵活 子类可以提供对象的扩展版本 连接平行的类层次 将哪些类应一同工作的信息局部化 实现Creator可以只声明工厂方法 也可以提供缺省的实现 可以使用模板以避免创建子类 可采用适当的命名约定说明正在使用工厂方

5、法 12 创建型模式 AbstractFactory 抽象工厂 对象创建型模式意图提供一个创建一系列相关或相互依赖对象的接口 而无需指定它们具体的类 适用性一个系统要独立于它的产品的创建 组合和表示时 一个系统要用多个产品系列中的一个来配置时 要强调一系列相关的产品对象的设计以便进行联合使用时 提供一个产品类库 而只想显示它们的接口而不是实现时 13 创建型模式 AbstractFactory 抽象工厂 14 创建型模式 15 创建型模式 AbstractFactory 抽象工厂 效果由工厂封装产品对象的创建 将客户与类的实现分离 易于交换产品系列 有利于产品的一致性 难以支持新种类的产品 实

6、现通常可以将工厂作为Singleton AbstractFactory声明创建产品的接口 由工厂子类负责创建产品 通常为每个产品定义一个工厂方法 一种更灵活但不太安全的设计是以参数方式创建对象 16 创建型模式 Builder 生成器 对象创建型模式意图将一个复杂对象的构建与它的表示分离 使得同样的构建过程可以创建不同的表示 适用性当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时 当构造过程必须允许被构造的对象有不同的表示时 17 创建型模式 Builder 生成器 18 创建型模式 四个角色 建造者 Builder 角色 给出一个抽象接口 以规范产品对象的各个组成成分的建造

7、 一般而言 此接口独立于应用程序的商业逻辑 模式中直接创建产品对象的是具体建造者 ConcreteBuilder 角色 具体建造者类必须实现这个接口所要求的方法 一个是建造方法 另一个是结果返还方法 具体建造者 ConcreteBuilder 角色 担任这个角色的是于应用程序紧密相关的类 它们在应用程序调用下创建产品实例 这个角色主要完成的任务包括 实现Builder角色提供的接口 一步一步完成创建产品实例的过程 在建造过程完成后 提供产品的实例 19 创建型模式 指导者 Director 角色 担任这个角色的类调用具体建造者角色以创建产品对象 导演者并没有产品类的具体知识 真正拥有产品类的具

8、体知识的是具体建造者对象 产品 Product 角色 产品便是建造中的复杂对象 指导者角色是于客户端打交道的角色 导演者角色将客户端创建产品的请求划分为对各个零件的建造请求 再将这些请求委派给具体建造者角色 具体建造者角色是做具体建造工作的 但却不为客户端所知 20 创建型模式 Builder 生成器 21 classBuilder 创建部件A比如创建汽车车轮voidbuildPartA 创建部件B比如创建汽车方向盘voidbuildPartB 创建部件C比如创建汽车发动机voidbuildPartC 返回最后组装成品结果 返回最后装配好的汽车 成品的组装过程不在这里进行 而是转移到下面的Di

9、rector类中进行 从而实现了解耦过程和部件Product getResult classDirector privateBuilder m builder publicDirector Builder builder m builder builder 将部件partApartBpartC最后组成复杂对象 这里是将车轮方向盘和发动机组装成汽车的过程publicvoidconstruct builder buildPartA builder buildPartB builder buildPartC classConcreteBuilder publicBuilder PartpartA p

10、artB partC public voidbuildPartA 这里是具体如何构建partA的代码 voidbuildPartB 这里是具体如何构建partB的代码 voidbuildPartC 这里是具体如何构建partB的代码 Product getResult 返回最后组装成品结果 ConcreteBuilderbuilder Directordirector 创建型模式 Builder 生成器 效果可以改变一个产品的内部表示 将构造代码和表示代码分开 可以对构造过程进行更精细的控制 实现Builder类接口应足够普遍 产品通常不需要有公共抽象类 Builder中通常缺省方法为空 22

11、 创建型模式 Prototype 原型 对象创建型模式意图用原型实例指定创建对象的种类 并且通过拷贝这些原型创建新的对象 适用性当要实例化的类是在运行时刻指定时 例如 通过动态装载 或者为了避免创建一个与产品类层次平行的工厂类层次时 或者当一个类的实例只能有几个不同状态组合中的一种时 建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些 23 创建型模式 Prototype 原型 24 创建型模式 客户 Client 角色 客户类提出创建对象的请求 抽象原型 Prototype 角色 这是一个抽象角色 通常由一个接口或抽象类实现 此角色给出所有的具体原型类所需的接口 具体

12、原型 ConcretePrototype 角色 被复制的对象 此角色需要实现抽象原型角色所要求的接口 25 创建型模式 Prototype 原型 效果可在运行时刻增加和删除产品 可以通过改变值来指定新产品 可以通过改变结构来指定新对象 减少了子类的构造 可以用类动态配置应用 实现使用一个原型管理器 实现克隆操作 浅拷贝和深拷贝 初始化克隆对象 参考阎宏的 JAVA模式 26 创建型模式 Singleton 单件 对象创建型模式意图保证一个类仅有一个实例 并提供一个访问它的全局访问点 适用性当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时 当这个唯一实例应该是通过子类化可扩展的 并且

13、客户应该无需更改代码就能使用一个扩展的实例时 27 创建型模式 Singleton 单件 28 实例详解 结构型模式 结构型模式的目的结构型模式涉及到如何组合类和对象以获得更大的结构 结构型类模式采用继承机制来组合接口或实现 结构型对象模式描述了如何对一些对象进行组合实现新功能 并可以在运行时刻改变对象组合关系的一些方法 29 Adapter Bridge Composite Decorator Facade Flyweight Proxy 结构型模式 Adapter 适配器 类 对象结构型模式意图将一个类的接口转换成客户希望的另外一个接口 使得原本由于接口不兼容而不能一起工作的那些类可以一起

14、工作 适用性你想使用一个已经存在的类 而它的接口不符合你的需求 你想创建一个可以复用的类 该类可以与其他不相关的类或不可预见的类 即那些接口可能不一定兼容的类 协同工作 仅适用于对象Adapter 你想使用一些已经存在的子类 但是不可能对每一个都进行子类化以匹配它们的接口 对象适配器可以适配它的父类接口 30 结构型模式 角色 目标 Target 角色 这是客户所期待的接口 因为C 不支持多继承 所以Target必须是接口 不可以是类 源 Adaptee 角色 需要适配的类 适配器 Adapter 角色 把源接口转换成目标接口 根据这一角色的实现不同 可分为类适配器和对象适配器 31 结构型模

15、式 Adapter 类适配器 类适配器是通过继承类适配者类 AdapteeClass 实现的 另外类适配器实现客户类所需要的接口 当客户对象调用适配器类方法的时候 适配器内部调用它所继承的适配者的方法 32 结构型模式 Adapter 对象适配器 对象适配器包含一个适配器者的引用 reference 与类适配器相同 对象适配器也实现了客户类需要的接口 当客户对象调用对象适配器的方法的时候 对象适配器调它所包含的适配器者实例的适当方法 33 实例详解 结构型模式 Bridge 桥接 对象结构型模式意图将抽象部分与它的实现部分分离 使它们都可以独立地变化 通过动态的结合实现解耦 GOF 比如说通过

16、JDBC访问数据库 我们操作的API是基于接口的 是抽象 没有实现 而特定数据库提供的驱动测试抽象方法的具体实现 适用性 34 结构型模式 Bridge 桥接 对象结构型模式意图适用性不希望在抽象和它的实现部分之间有一个固定的绑定关系 类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充 对一个抽象的实现部分的修改应对客户不产生影响 即客户的代码不必重新编译 你想对客户完全隐藏抽象的实现部分 有许多子类要生成 这样一种类层次结构说明你必须将一个对象分解成两个部分 你想在多个对象间共享实现 可能使用引用计数 但同时要求客户并不知道这一点 35 结构型模式 Bridge 桥接 36 结构型模式 角色 抽象化 Abstraction 角色 抽象化给出的定义 并保存一个对实现化对象的引用 修正抽象化 RefinedAbstraction 角色 扩展抽象化角色 改变和修正父类对抽象化的定义 实现化 Implementor 角色 这个角色给出实现化角色的接口 但不给出具体的实现 必须指出的是 这个接口不一定和抽象化角色的接口定义相同 实际上 这两个接口可以非常不一样 实现化角色应当只给出底层操

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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