设计模式之策略模式
主讲人 :成 玉 丹 时 间:
目 录
Contents
1
2
3
4
定义和角色
结构示意图
示例代码
实例说明
5
优缺点环境
定义:下来看看上下文的实现,也就是原来的价格类,它的变化比较大,主要有:
原来那些私有的,用来做不同计算的方法,已经去掉了,独立出去做成了算法类
原来报价方法里面,对具体计算方式的判断,去掉了,让客户端来完成选择具体算法的功能
新添加持有一个具体的算法实现,通过构造方法传入
原来报价方法的实现,变化成了转调具体算法来实现
定义和角色
结构示意图
示例代码
实例说明
优缺点和环境
定义和角色
结构示意图
示例代码
实例说明
优缺点和环境
写个客户端来测试运行一下,示例代码如下:
定义和角色
结构示意图
示例代码
实例说明
优缺点和环境
目 录
Contents
1
2
3
4
定义和角色
结构示意图
示例代码
实例说明
5
优缺点和环境
优点:
1、 策略模式提供了管理相关的算法族的办法。恰当使用继承可以把公共的代码转移到父类里面,从而避免重复的代码。
2、 策略模式提供了可以替换继承关系的办法。继承可以处理多种算法或行为。
3、 使用策略模式可以避免使用多重条件转移语句。如果采用多重转移语句将不易维护.
定义和角色
结构示意图
示例代码
实例说明
优缺点和环境
缺点:
1、客户端必须知道所有的策略类,并自行决定使用哪一个策略类。换言之,策略模式只适用于客户端知道所有的算法或行为的情况。
2、 策略模式造成很多的策略类,每个具体策略类都会产生一个新类,使得策略类变得很复杂。
定义和角色
结构示意图
示例代码
实例说明
优缺点和环境
应用环境:
1、实现某特定功能在不同的情况下采用不同的策略即算法,程序在运行时动态选择所要采用的策略。 2、对客户端完全隐藏算法的具体实现细节。 3、不同种算法之间可以彼此替换且完全独立。
定义和角色
结构示意图
示例代码
实例说明
优缺点和环境
设计模式之模板方法模式
主讲人 :孙 晗 时 间:
目 录
Contents
1
2
3
4
定义和角色
结构示意图
优缺点和环境
实例说明
5
区别与联系
定义:一个抽象类中,有一个主方法,再定义1~n个方法,这些方法可以是抽象的,也可以是具体的;定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用。
意图:模板方法模式是在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
定义和角色
结构示意图
实例说明
区别与联系
优缺点和环境
角色(两种):
抽象模板类:
①定义了一个或多个抽象操作,以便让子类实现。这些抽象操作叫做基本操作,它们是一个顶级逻辑的组成步骤
②定义并实现了一个模板方法
具体模板类:
①现父类所定义的一个或多个抽象方法
②每一个抽象模板类都可以有任意多个具体模板类与之对应,而每一个具体模板类都可以给出这些抽象方法的不同实现,从而使得顶级逻辑的实现各不相同
定义和角色
结构示意图
实例说明
区别与联系
优缺点和环境
方法(两种):
模板方法:
一个模板方法是定义在抽象类中的,把基本操作方法组合在一起形成一个总算法或一个总行为的方法。一个抽象类可以有任意多个模板方法,而不限于一个。每一个模板方法都可以调用任意多个具体方法。
基本方法:
抽象方法:由抽象类声明,由具体子类实现,java语言中以abstract关键字标出来。
具体方法:由抽象类声明并实现,而子类并不实现或置换,java中没有abstract关键字。
钩子方法:有抽象类声明并实现,而子类会加以扩展。通常抽象类给出的实现是一个空实现,作为方法的默认实现。因此,此方法的存在,可以让子类有能力对算法的不同点进行挂钩,要不要挂钩,由子类自行决定。
定义和角色
结构示意图
实例说明
区别与联系
优缺点和环境
目 录
Contents
1
2
3
4
定义和角色
结构示意图
优缺点和环境
实例说明
5
区别与联系
定义和角色
结构示意图
实例说明
区别与联系
优缺点和环境
目 录
Contents
1
2
3
4
定义和角色
结构示意图
优缺点和环境
实例说明
5
区别与联系
创建一个模板(抽象)类:Bev
设计模式之策略模式课件 来自淘豆网m.daumloan.com转载请标明出处.