设计模式之策略模式课件.ppt

设计模式之策略模式课件.ppt

ID:51473225

大小:920.00 KB

页数:45页

时间:2020-03-23

设计模式之策略模式课件.ppt_第1页
设计模式之策略模式课件.ppt_第2页
设计模式之策略模式课件.ppt_第3页
设计模式之策略模式课件.ppt_第4页
设计模式之策略模式课件.ppt_第5页
资源描述:

《设计模式之策略模式课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库

1、设计模式之策略模式主讲人:成玉丹时间:2016.11.14目录Contents1234定义和角色结构示意图示例代码实例说明5优缺点环境定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以互相替换。策略模式让算法独立于使用它的客户而独立变化。定义和角色结构示意图示例代码实例说明优缺点和环境角色(三种):策略接口:用来约束一系列具体的策略算法。策略实现:就是具体的算法实现。上下文:负责和具体的策略类交互,通常上下文会持有一个真正的策略实现。还可以让具体的策略类来获取上下文的数据,甚至让具体的策略类来获取上下文的数据。

2、角色之间的关系:上下文使用策略接口来调用具体的策略实现定义的算法。定义和角色结构示意图示例代码实例说明优缺点和环境目录Contents1234定义和角色结构示意图示例代码实例说明5优缺点和环境策略实现(算法实现)定义和角色结构示意图示例代码实例说明优缺点和环境目录Contents1234定义和角色结构示意图示例代码实例说明5优缺点和环境1、策略接口:定义算法的接口:调用具体的算法定义和角色结构示意图示例代码实例说明优缺点和环境2、策略实现:在具体的算法实现中,定义了三个,分别是ConcreteStrategyA、ConcreteStr

3、ategyB、ConcreteStrategyC,示例非常简单,由于没有具体算法的实现,三者也就是名称不同,示例代码如下:定义和角色结构示意图示例代码实例说明优缺点和环境3、上下文的实现:示例代码如下例如上文提到A,B,C三个对象定义和角色结构示意图示例代码实例说明优缺点和环境目录Contents1234定义和角色结构示意图示例代码实例说明5优缺点和环境实例:报价管理问题向客户报价,对于销售部门的人来讲,这是一个非常重大、非常复杂的问题,对不同的客户要报不同的价格,例如有新客户、老客户、大客户等。为了演示的简洁性,假定现在需要实现一个

4、简化的报价管理,实现如下的功能:1)对普通客户或者是新客户报全价2)对老客户报的价格,统一折扣5%3)对大客户报的价格,统一折扣10%该怎么实现呢?定义和角色结构示意图示例代码实例说明优缺点和环境1、不用模式的解决方案:这种解决方案存在的问题:价格类包含了所有计算报价的算法,使得价格类,尤其是报价这个方法比较庞杂,难以维护。定义了计算价格的算法定义和角色结构示意图示例代码实例说明优缺点和环境2、不用模式的修改方案:把这些算法从报价方法里面拿出去,形成独立的方法。据此写出如下的实现代码,示例代码如下:把算法从报价方法里拿出去,形成独立的

5、方法,这里调用了算法定义和角色结构示意图示例代码实例说明优缺点和环境新客户和普通客户老客户大客户这样做的优点是:容易扩展,较好的维护。缺点是:如果有100种情况时,怎么做?定义和角色结构示意图示例代码实例说明优缺点和环境3、策略模式下的解决方案:要使用策略模式来重写前面报价的示例,大致有如下改变:首先需要定义出算法的接口。(策略接口)然后把各种报价的计算方式单独出来,形成算法类。(策略实现)对于Price这个类,把它当做上下文,在计算报价的时候,不再需要判断,直接使用持有的具体算法进行运算即可。选择使用哪一个算法的功能挪出去,放到外部

6、使用的客户端去。(上下文)实例的结构图定义和角色结构示意图示例代码实例说明优缺点和环境先看策略接口,示例代码如下:定义和角色结构示意图示例代码实例说明优缺点和环境接下来看看具体的算法实现,不同的算法,实现也不一样,先看为新客户或者是普通客户计算应报的价格的实现,示例代码如下:定义和角色结构示意图示例代码实例说明优缺点和环境老客户计算应报的价格的实现,示例代码如下:定义和角色结构示意图示例代码实例说明优缺点和环境大客户计算应报的价格的实现,示例代码如下:定义和角色结构示意图示例代码实例说明优缺点和环境接下来看看上下文的实现,也就是原来的

7、价格类,它的变化比较大,主要有:原来那些私有的,用来做不同计算的方法,已经去掉了,独立出去做成了算法类原来报价方法里面,对具体计算方式的判断,去掉了,让客户端来完成选择具体算法的功能新添加持有一个具体的算法实现,通过构造方法传入原来报价方法的实现,变化成了转调具体算法来实现定义和角色结构示意图示例代码实例说明优缺点和环境定义和角色结构示意图示例代码实例说明优缺点和环境写个客户端来测试运行一下,示例代码如下:定义和角色结构示意图示例代码实例说明优缺点和环境目录Contents1234定义和角色结构示意图示例代码实例说明5优缺点和环境优点

8、:1、策略模式提供了管理相关的算法族的办法。恰当使用继承可以把公共的代码转移到父类里面,从而避免重复的代码。2、策略模式提供了可以替换继承关系的办法。继承可以处理多种算法或行为。3、使用策略模式可以避免使用多重条件转移语

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。