软件设计模式PPT课件
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
✓原型(Prototype)模式:通过“复制”一个已经存在的实 例来返回新的实例,而不是新建实例。被复制的实例就是我 们所称的“原型”,这个原型是可定制的。原型模式多用于 创建复杂的或者耗时的实例,因为这种情况下,复制一个已 经存在的实例使程序运行更高效;或者创建值相等,只是命 名不一样的同类数据
14
16
行为型设计模式
✓着力解决的是类实体之间的通讯关系,希望以面向对象的方 式描述一个控制流程
✓模版方法(Template Method):定义了一个算法步骤,并 允许子类别为一个或多个步骤提供其实现方式。让子类别在 不改变算法架构的情况下,重新定义算法中某些步骤 ✓观察者(Observer)模式:定义了对象之间一对多的依赖, 当这个对象的状态发生改变的时候,多个对象会接受到通知, 有机会做出反馈 ✓迭代子(Iterator)模式:提供一种方法顺序访问一个聚合 对象中各个元素, 而又不需暴露该对象的内部表示
✓抽象工厂(Abstract Factory):为一个产品族提供统一的 创建接口。当需要这个产品族的某一系列的时候,可以从抽 象工厂中选出相应的系列创建一个具体的工厂类
13
创建型设计模式
✓生成器(Builder)模式:将复杂对象的构建与它的表示分 离,同样的构建过程可以创建不同的表示。允许用户可以只 通过指定复杂对象的类型和内容就可以构建它们,用户不知 道内部的具体构建细节
✓桥梁(Bridge)模式:桥梁模式的用意是将问题的抽象和 实现分离开来实现,通过用聚合代替继承来解决子类爆炸性 增长的问题
✓适配器(Adapter)模式:将一个类的接口适配成用户所期待 的接口。一个适配器允许通常因为接口不兼容而不能在一起 工作的类工作在一起,做法是将类自己的接口包装在一个已 存在的类中
8
设计模式的类型
✓在设计模式经典著作《GOF95》中,设计模式从应用的角度被 分为三个大的类型
✓创建型模式 ✓结构型模式 ✓行为型模式
12
创建型设计模式
✓用来创建对象的模式,抽象了实例化过程 ✓单件(Singleton)模式:保证一个类有且仅有一个实例, 提供一个全局访问点
✓工厂方法(Factory Method):父类负责定义创建对象的 公共接口,而子类则负责生成具体对象,将类的实例化操作 延迟到子类中完成
✓ 效果:描述了模式应用效果及使用模式应权衡的问题
5
设计模式的原则
✓ "开-闭"原则(Open Closed Principal) ✓ 单一职责原则 ✓ 里氏代换原则 ✓ 依赖倒置原则 ✓ 设计模式就是实现了这些原则,从而达到了代码
复用、增加可维护性的目的
6
开放封闭原则(OCP)
✓ 定义:软件对扩展应该是开放的,对修改应该是关闭的。开 发一个软件时,应该可以对它进行功能扩展(开放),在进行 扩展的时候,不需要对原来的程序进行修改(关闭)
✓备忘录(Memento)模式:在不破坏封装性的前提下,捕获 一个对象的内部状态,并在该对象之外保存这个状态。这样以 后就可将该对象恢复到原先保存的状态
✓命令(Command)模式:将请求及其参数封装成一个对象, 可以对这些请求排队或记录请求日志,以及支持可撤销操作
软件设计模式
1
整体 概述
一 请在这里输入您的主要叙述内容
二
请在这里输入您的主要 叙述内容
三 请在这里输入您的主要叙述内容
2
主要内容
软件设计模式基础 创建型模式 结构型模式 行为型模式
3
什么是设计模式
✓ 模式是一种特别巧妙和敏锐的用以解决某类特定 问题的最通用和灵活的解决办法
✓ 模式体现的是程序整体的构思,所以有时候它也 会出现在分析或者是概要设计阶段
✓ 增加一个抽象层,把变化部分从那些不变部分里 分离出来
4
模式的基本要素
✓ 模式名称
✓ 问题:描述应该在何时使用模式。解释了设计问题和 问题存在的前因后果,可能描述了特定的设计问题, 如怎样用对象表示算法等。也可能描述了导致不灵活 设计的类或对象结构
✓ 解决方案:描述了设计的组成成分,它们之间的相互 关系及各自的职责和协作方式
✓ 好处: 在软件可用性上非常灵活。可以在软件完成后对软件进行扩 展,加入新的功能。这样,软件就可通过不断的增加新 模块满足不断变化的新需求 由于不修改软件原来的模块,不用担心软件的稳定性
7
开放封闭原则(OCP)
✓ 实现的主要原则 ✓ 抽象原则:把系统的所有可能的行为抽象成一个 底层 ;由于可从抽象层导出一个或多个新的具 体类来改变系统行为,因此对于可变部分,系统 设计对扩展是开放的 ✓ 可变性封装原则(EVP ):对系统所有可能发 生变化的部分进行评估和分类,每一个可变的因 素都单独进行封装
结构型设计模式
✓享元(Flyweight)模式:Flyweight是一个共享对象,它可 以同时在不同上下文(Context)使用
✓外观(Facade)模式:外观模式为子系统提供了一个更高 层次、更简单的接口,从而降低了子系统的复杂度和依赖。 这使得子系统更易于使用和管理。外观承担与子系统中类交 互的责任
17
行为型设计模式
✓责任链(Chain of Responsibility)模式:很多对象由每一个 对象对其下一个对象的引用而连接起来形成一条链。请求在这 个链上传递,直到链上的某一个对象决定处理此请求。发出这 个请求的客户端并不知道链上的哪一个对象最终处理这个请求, 这使系统可以在不影响客户端的情况下动态的重新组织链和分 配责任
结构型设计模式
✓结构型模式讨论的是类和对象的结构,它采用继承机制来组合 接口或实现(类结构型模式),或者通过组合一些对象,从而实 现新的功能(对象结构型模式)
✓合成(Composite)模式:定义一个接口,使之可以用于单 一对象,也可以应用于多个单一对象组成的对象组 ✓装饰(Decorator)模式:动态给一个对象添加一些额外的职 责,就好像给一个物体加上装饰物,完善其功能 ✓代理(Proxy)模式:在软件系统中,有些对象有时候由于 跨越网络或者其他的障碍,而不能够或者不想直接访问另一个 对象,如果直接访问会给系统带来不必要的复杂性,这时候可 以在客户程序和目标对象之间增加一层中间层,让代理对象来 代替目标对象打点一切,这就是代理(Proxy)模式
14
16
行为型设计模式
✓着力解决的是类实体之间的通讯关系,希望以面向对象的方 式描述一个控制流程
✓模版方法(Template Method):定义了一个算法步骤,并 允许子类别为一个或多个步骤提供其实现方式。让子类别在 不改变算法架构的情况下,重新定义算法中某些步骤 ✓观察者(Observer)模式:定义了对象之间一对多的依赖, 当这个对象的状态发生改变的时候,多个对象会接受到通知, 有机会做出反馈 ✓迭代子(Iterator)模式:提供一种方法顺序访问一个聚合 对象中各个元素, 而又不需暴露该对象的内部表示
✓抽象工厂(Abstract Factory):为一个产品族提供统一的 创建接口。当需要这个产品族的某一系列的时候,可以从抽 象工厂中选出相应的系列创建一个具体的工厂类
13
创建型设计模式
✓生成器(Builder)模式:将复杂对象的构建与它的表示分 离,同样的构建过程可以创建不同的表示。允许用户可以只 通过指定复杂对象的类型和内容就可以构建它们,用户不知 道内部的具体构建细节
✓桥梁(Bridge)模式:桥梁模式的用意是将问题的抽象和 实现分离开来实现,通过用聚合代替继承来解决子类爆炸性 增长的问题
✓适配器(Adapter)模式:将一个类的接口适配成用户所期待 的接口。一个适配器允许通常因为接口不兼容而不能在一起 工作的类工作在一起,做法是将类自己的接口包装在一个已 存在的类中
8
设计模式的类型
✓在设计模式经典著作《GOF95》中,设计模式从应用的角度被 分为三个大的类型
✓创建型模式 ✓结构型模式 ✓行为型模式
12
创建型设计模式
✓用来创建对象的模式,抽象了实例化过程 ✓单件(Singleton)模式:保证一个类有且仅有一个实例, 提供一个全局访问点
✓工厂方法(Factory Method):父类负责定义创建对象的 公共接口,而子类则负责生成具体对象,将类的实例化操作 延迟到子类中完成
✓ 效果:描述了模式应用效果及使用模式应权衡的问题
5
设计模式的原则
✓ "开-闭"原则(Open Closed Principal) ✓ 单一职责原则 ✓ 里氏代换原则 ✓ 依赖倒置原则 ✓ 设计模式就是实现了这些原则,从而达到了代码
复用、增加可维护性的目的
6
开放封闭原则(OCP)
✓ 定义:软件对扩展应该是开放的,对修改应该是关闭的。开 发一个软件时,应该可以对它进行功能扩展(开放),在进行 扩展的时候,不需要对原来的程序进行修改(关闭)
✓备忘录(Memento)模式:在不破坏封装性的前提下,捕获 一个对象的内部状态,并在该对象之外保存这个状态。这样以 后就可将该对象恢复到原先保存的状态
✓命令(Command)模式:将请求及其参数封装成一个对象, 可以对这些请求排队或记录请求日志,以及支持可撤销操作
软件设计模式
1
整体 概述
一 请在这里输入您的主要叙述内容
二
请在这里输入您的主要 叙述内容
三 请在这里输入您的主要叙述内容
2
主要内容
软件设计模式基础 创建型模式 结构型模式 行为型模式
3
什么是设计模式
✓ 模式是一种特别巧妙和敏锐的用以解决某类特定 问题的最通用和灵活的解决办法
✓ 模式体现的是程序整体的构思,所以有时候它也 会出现在分析或者是概要设计阶段
✓ 增加一个抽象层,把变化部分从那些不变部分里 分离出来
4
模式的基本要素
✓ 模式名称
✓ 问题:描述应该在何时使用模式。解释了设计问题和 问题存在的前因后果,可能描述了特定的设计问题, 如怎样用对象表示算法等。也可能描述了导致不灵活 设计的类或对象结构
✓ 解决方案:描述了设计的组成成分,它们之间的相互 关系及各自的职责和协作方式
✓ 好处: 在软件可用性上非常灵活。可以在软件完成后对软件进行扩 展,加入新的功能。这样,软件就可通过不断的增加新 模块满足不断变化的新需求 由于不修改软件原来的模块,不用担心软件的稳定性
7
开放封闭原则(OCP)
✓ 实现的主要原则 ✓ 抽象原则:把系统的所有可能的行为抽象成一个 底层 ;由于可从抽象层导出一个或多个新的具 体类来改变系统行为,因此对于可变部分,系统 设计对扩展是开放的 ✓ 可变性封装原则(EVP ):对系统所有可能发 生变化的部分进行评估和分类,每一个可变的因 素都单独进行封装
结构型设计模式
✓享元(Flyweight)模式:Flyweight是一个共享对象,它可 以同时在不同上下文(Context)使用
✓外观(Facade)模式:外观模式为子系统提供了一个更高 层次、更简单的接口,从而降低了子系统的复杂度和依赖。 这使得子系统更易于使用和管理。外观承担与子系统中类交 互的责任
17
行为型设计模式
✓责任链(Chain of Responsibility)模式:很多对象由每一个 对象对其下一个对象的引用而连接起来形成一条链。请求在这 个链上传递,直到链上的某一个对象决定处理此请求。发出这 个请求的客户端并不知道链上的哪一个对象最终处理这个请求, 这使系统可以在不影响客户端的情况下动态的重新组织链和分 配责任
结构型设计模式
✓结构型模式讨论的是类和对象的结构,它采用继承机制来组合 接口或实现(类结构型模式),或者通过组合一些对象,从而实 现新的功能(对象结构型模式)
✓合成(Composite)模式:定义一个接口,使之可以用于单 一对象,也可以应用于多个单一对象组成的对象组 ✓装饰(Decorator)模式:动态给一个对象添加一些额外的职 责,就好像给一个物体加上装饰物,完善其功能 ✓代理(Proxy)模式:在软件系统中,有些对象有时候由于 跨越网络或者其他的障碍,而不能够或者不想直接访问另一个 对象,如果直接访问会给系统带来不必要的复杂性,这时候可 以在客户程序和目标对象之间增加一层中间层,让代理对象来 代替目标对象打点一切,这就是代理(Proxy)模式