设计模式之策略模式与模板模式

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PPT文档演模板
设计模式之策略模式与模板模式
定义和角色 结构示意图
示例代码 实例说明 优缺点和环境
大客户计算应报的价格的实现,示例代码如下:
PPT文档演模板
设计模式之策略模式与模板模式
定义和角色 结构示意图
示例代码 实例说明 优缺点和环境
接下来看看上下文的实现,也就是原来的价格类,它 的变化比较大,主要有:
定义和角色 结构示意图
示例代码 实例说明 优缺点和环境
PPT文档演模板
新客户和普通客户
老客户 大客户
这样做的优点是:容易扩展,较好的维护。 缺点是:如果有100种情况时,怎么做?
设计模式之策略模式与模板模式
定义和角色 结构示意图
示例代码 实例说明 优缺点和环境
3、策略模式下的解决方案:
要使用策略模式来重写前面报价的示例,大致有如下改变: 首先需要定义出算法的接口。(策略接口) 然后把各种报价的计算方式单独出来,形成算法类。(策略实现) 对于Price这个类,把它当做上下文,在计算报价的时候,不再需
•原来那些私有的,用来做不同计算的方法,已经去掉了, 独立出去做成了算法类 •原来报价方法里面,对具体计算方式的判断,去掉了,让 客户端来完成选择具体算法的功能 •新添加持有一个具体的算法实现,通过构造方法传入 •原来报价方法的实现,变化成了转调具体算法来实现
PPT文档演模板
设计模式之策略模式与模板模式
定义和角色 结构示意图
示例代码 实例说明 优缺点和环境
接下来看看具体的算法实现,不同的算法, 实现也不一样,先看为新客户或者是普通客户计算 应报的价格的实现,示例代码如下:
PPT文档演模板
设计模式之策略模式与模板模式
定义和角色 结构示意图
示例代码 实例说明 优缺点和环境
老客户计算应报的价格的实现,示例代码如下:
PPT文档演模板
设计模式之策略模式与模板模式
定义和角色 结构示意图
示例代码 实例说明
角色(三种):
策略接口:用来约束一系列具体的策略算法。 策略实现:就是具体的算法实现。 上下文:负责和具体的策略类交互,通常上下文会持有一 个真正的策略实现。还可以让具体的策略类来获取上下文的数 据,甚至让具体的策略类来获取上下文的数据。
设计模式之策略模式与 模板模式
PPT文档演模板
2020/12/8
设计模式之策略模式与模板模式
目录
Contents
1 定义和角色 2 结构示意图 3 示例代码 4 实例说明 5 优缺点环境
PPT文档演模板
设计模式之策略模式与模板模式
ຫໍສະໝຸດ Baidu
定义和角色 结构示意图
示例代码 实例说明 优缺点和环境
定义:
策略模式定义了一系列的算法,并将每一个 算法封装起来,而且使它们还可以互相替换。策 略模式让算法独立于使用它的客户而独立变化。
PPT文档演模板
设计模式之策略模式与模板模式
目录
Contents
PPT文档演模板
1 定义和角色 2 结构示意图 3 实例说明 4 优缺点和环境 5 区别与联系
设计模式之策略模式与模板模式
定义和角色 结构示意图
实例说明 优缺点和环境
区别与联系
PPT文档演模板
设计模式之策略模式与模板模式
目录
Contents
PPT文档演模板
设计模式之策略模式与模板模式
定义和角色 结构示意图
示例代码 实例说明 优缺点和环境
缺点:
1、客户端必须知道所有的策略类,并自行 决定使用哪一个策略类。换言之,策略模式只 适用于客户端知道所有的算法或行为的情况。
2、 策略模式造成很多的策略类,每个具 体策略类都会产生一个新类,使得策略类变得 很复杂。
实例说明 优缺点和环境
区别与联系
PPT文档演模板
测试类
运行结果
设计模式之策略模式与模板模式
目录
Contents
PPT文档演模板
1 定义和角色 2 结构示意图 3 实例说明 4 优缺点和环境 5 区别与联系
设计模式之策略模式与模板模式
定义和角色 结构示意图
实例说明 优缺点和环境
区别与联系
优点 (1)模板方法模式通过把不变的行为搬移到 超类,去除了子类中的重复代码。子类实现算法 的某些细节,有助于算法的扩展和代码复用。 (2)通过一个父类调用子类实现的操作,通 过子类扩展增加新的行为,符合“开放-封闭原 则”。 (3)使用模板方法是系统扩展性得到增强, 最小化了变化对系统的影响。
实例说明 优缺点和环境
区别与联系
定义:一个抽象类中,有一个主方法,再定
义1~n个方法,这些方法可以是抽象的,也可以是具 体的;定义一个类,继承该抽象类,重写抽象方法, 通过调用抽象类,实现对子类的调用。
意图:模板方法模式是在一个方法中定义一
个算法的骨架,而将一些步骤延迟到子类中实现。模 板方法使得子类可以在不改变算法结构的情况下,重 新定义算法中的某些步骤。
设计模式之策略模式与模板模式
设计模式之模板方法模 式
主讲人 :孙 晗

间:2016.11.14
PPT文档演模板
设计模式之策略模式与模板模式
目录
Contents
PPT文档演模板
1 定义和角色 2 结构示意图 3 实例说明 4 优缺点和环境 5 区别与联系
设计模式之策略模式与模板模式
定义和角色 结构示意图
设计模式之策略模式与模板模式
定义和角色 结构示意图
示例代码 实例说明 优缺点和环境
优点:
1、 策略模式提供了管理相关的算法族的办法。 恰当使用继承可以把公共的代码转移到父类里面, 从而避免重复的代码。
2、 策略模式提供了可以替换继承关系的办法。 继承可以处理多种算法或行为。
3、 使用策略模式可以避免使用多重条件转移 语句。如果采用多重转移语句将不易维护.
定义和角色 结构示意图
示例代码 实例说明 优缺点和环境
PPT文档演模板
设计模式之策略模式与模板模式
定义和角色 结构示意图
示例代码 实例说明 优缺点和环境
写个客户端来测试运行一下,示例代码如下:
PPT文档演模板
设计模式之策略模式与模板模式
目录
Contents
PPT文档演模板
1 定义和角色 2 结构示意图 3 示例代码 4 实例说明 5 优缺点和环境
PPT文档演模板
设计模式之策略模式与模板模式
定义和角色 结构示意图
示例代码 实例说明 优缺点和环境
3、上下文的实现:示例代码如下
例如上文提到A,B,C 三个对象
PPT文档演模板
设计模式之策略模式与模板模式
目录
Contents
PPT文档演模板
1 定义和角色 2 结构示意图 3 示例代码 4 实例说明 5 优缺点和环境
设计模式之策略模式与模板模式
定义和角色 结构示意图
示例代码 实例说明 优缺点和环境
2、不用模式的修改方案:
把这些算法从报价方法里面拿出去,形成独立的方法。据 此写出如下的实现代码,示例代码如下:
PPT文档演模板
把算法从报价方法里拿 出去,形成独立的方法, 设计模这式里之调策略用模了式算与模法板模式
设计模式之策略模式与模板模式
定义和角色 结构示意图
示例代码 实例说明 优缺点和环境
实例:报价管理问题
向客户报价,对于销售部门的人来讲,这是一个非常重 大、非常复杂的问题,对不同的客户要报不同的价格,例如 有新客户、老客户、大客户等。
为了演示的简洁性,假定现在需要实现一个简化的报价 管理,实现如下的功能:
PPT文档演模板
设计模式之策略模式与模板模式
定义和角色 结构示意图
实例说明 优缺点和环境
区别与联系
缺点 (1)每个不同的实现都需要定义一个 子类,这会导致类的个数的增加,也会增 加很多具体方法的数量,使设计更加抽象。 (2)如果选用的实现方式不当,复用 情况会很差。
PPT文档演模板
设计模式之策略模式与模板模式
基本方法:
抽象方法:由抽象类声明,由具体子类实现,java语言中 以abstract关键字标出来。
具体方法:由抽象类声明并实现,而子类并不实现或置换, java中没有abstract关键字。
钩子方法:有抽象类声明并实现,而子类会加以扩展。通 常抽象类给出的实现是一个空实现,作为方法的默认实现。因 此,此方法的存在,可以让子类有能力对算法的不同点进行挂 钩,要不要挂钩,由子类自行决定。
优缺点和环境
角色之间的关系:上下文使用策略接口来调用具体的策略 实现定义的算法。
PPT文档演模板
设计模式之策略模式与模板模式
目录
Contents
PPT文档演模板
1 定义和角色 2 结构示意图 3 示例代码 4 实例说明 5 优缺点和环境
设计模式之策略模式与模板模式
定义和角色 结构示意图
示例代码 实例说明 优缺点和环境
PPT文档演模板
设计模式之策略模式与模板模式
定义和角色 结构示意图
实例说明 优缺点和环境
区别与联系
方法(两种):
模板方法:
一个模板方法是定义在抽象类中的,把基本操作方法组合 在一起形成一个总算法或一个总行为的方法。一个抽象类可以 有任意多个模板方法,而不限于一个。每一个模板方法都可以 调用任意多个具体方法。
定义和角色 结构示意图
实例说明 优缺点和环境
区别与联系
应用范围:
子类具有统一的操作步骤或操作过程; 子类具有不同的操作细节; 存在多个具有同样操作步骤的应用场 景,但某些具体的操作细节却各不相同。
PPT文档演模板
设计模式之策略模式与模板模式
PPT文档演模板
设计模式之策略模式与模板模式
定义和角色 结构示意图
示例代码 实例说明 优缺点和环境
应用环境:
1、实现某特定功能在不同的情况下采用不 同的策略即算法,程序在运行时动态选择所要 采用的策略。
2、对客户端完全隐藏算法的具体实现细节。 3、不同种算法之间可以彼此替换且完全独 立。
PPT文档演模板
1)对普通客户或者是新客户报全价 2)对老客户报的价格,统一折扣5% 3)对大客户报的价格,统一折扣10% 该怎么实现呢?
PPT文档演模板
设计模式之策略模式与模板模式
定义和角色 结构示意图
示例代码 实例说明 优缺点和环境
PPT文档演模板
1、不用模式的解决方案:
定义了计算价格 的算法
这种解决方案存在的问题:价格类包含了 所有计算报价的算法,使得价格类,尤其 是报价这个方法比较庞杂,难以维护。
PPT文档演模板
1 定义和角色 2 结构示意图 3 实例说明 4 优缺点和环境 5 区别与联系
设计模式之策略模式与模板模式
定义和角色 结构示意图
实例说明 优缺点和环境
区别与联系
PPT文档演模板
创建一个模板(抽象)类:Beverage(饮料)
模板方法给出了逻辑的骨架,而 逻辑的组成是一些相应的抽象操 作,他们推迟到子类中去实现
PPT文档演模板
策略实现(算法实现)
设计模式之策略模式与模板模式
目录
Contents
PPT文档演模板
1 定义和角色 2 结构示意图 3 示例代码 4 实例说明 5 优缺点和环境
设计模式之策略模式与模板模式
定义和角色 结构示意图
示例代码 实例说明 优缺点和环境
PPT文档演模板
1、策略接口:定义算法的接口:
设计模式之策略模式与模板模式
定义和角色 结构示意图
实例说明 优缺点和环境
区别与联系
PPT文档演模板
创建一个咖啡类(Coffee)和茶(Tea)类,都继承Beverage 抽象类,而各个方法的具体实现方式都不同
这就实现了模板方法中最重要的 类的继承和方法的复用
设计模式之策略模式与模板模式
定义和角色 结构示意图
PPT文档演模板
设计模式之策略模式与模板模式
定义和角色 结构示意图
实例说明 优缺点和环境
区别与联系
角色(两种):
抽象模板类:
①定义了一个或多个抽象操作,以便让子类实现。这些抽 象操作叫做基本操作,它们是一个顶级逻辑的组成步骤
②定义并实现了一个模板方法 具体模板类: ①现父类所定义的一个或多个抽象方法 ②每一个抽象模板类都可以有任意多个具体模板类与之对 应,而每一个具体模板类都可以给出这些抽象方法的不同实现, 从而使得顶级逻辑的实现各不相同
要判断,直接使用持有的具体算法进行运算即可。选择使用哪一个算法 的功能挪出去,放到外部使用的客户端去。(上下文)
实 例 的 结 构 图
PPT文档演模板
设计模式之策略模式与模板模式
定义和角色 结构示意图
示例代码 实例说明 优缺点和环境
先看策略接口,示例代码如下:
PPT文档演模板
设计模式之策略模式与模板模式
调用具体的算法
设计模式之策略模式与模板模式
定义和角色 结构示意图
示例代码 实例说明 优缺点和环境
2、策略实现:在具体的算法实现中,定义了三个,分别 是ConcreteStrategyA、ConcreteStrategyB、 ConcreteStrategyC,示例非常简单,由于没有具体算法 的实现,三者也就是名称不同,示例代码如下:
相关文档
最新文档