- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
设计模式之策略模式 主讲人:成玉丹 时间:2016.11.14
目录Contents1234定义和角色结构示意图示例代码实例说明5优缺点环境
定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以互相替换。策略模式让算法独立于使用它的客户而独立变化。定义和角色结构示意图示例代码实例说明优缺点和环境
角色(三种):策略接口:用来约束一系列具体的策略算法。策略实现:就是具体的算法实现。上下文:负责和具体的策略类交互,通常上下文会持有一个真正的策略实现。还可以让具体的策略类来获取上下文的数据,甚至让具体的策略类来获取上下文的数据。角色之间的关系:上下文使用策略接口来调用具体的策略实现定义的算法。定义和角色结构示意图示例代码实例说明优缺点和环境
目录Contents1234定义和角色结构示意图示例代码实例说明5优缺点和环境
策略实现(算法实现)定义和角色结构示意图示例代码实例说明优缺点和环境
目录Contents1234定义和角色结构示意图示例代码实例说明5优缺点和环境
1、策略接口:定义算法的接口:调用具体的算法定义和角色结构示意图示例代码实例说明优缺点和环境
2、策略实现:在具体的算法实现中,定义了三个,分别是ConcreteStrategyA、ConcreteStrategyB、ConcreteStrategyC,示例非常简单,由于没有具体算法的实现,三者也就是名称不同,示例代码如下:定义和角色结构示意图示例代码实例说明优缺点和环境
3、上下文的实现:示例代码如下例如上文提到A,B,C三个对象定义和角色结构示意图示例代码实例说明优缺点和环境
目录Contents1234定义和角色结构示意图示例代码实例说明5优缺点和环境
实例:报价管理问题向客户报价,对于销售部门的人来讲,这是一个非常重大、非常复杂的问题,对不同的客户要报不同的价格,例如有新客户、老客户、大客户等。为了演示的简洁性,假定现在需要实现一个简化的报价管理,实现如下的功能:1)对普通客户或者是新客户报全价2)对老客户报的价格,统一折扣5%3)对大客户报的价格,统一折扣10%该怎么实现呢?定义和角色结构示意图示例代码实例说明优缺点和环境
1、不用模式的解决方案:这种解决方案存在的问题:价格类包含了所有计算报价的算法,使得价格类,尤其是报价这个方法比较庞杂,难以维护。定义了计算价格的算法定义和角色结构示意图示例代码实例说明优缺点和环境
2、不用模式的修改方案:把这些算法从报价方法里面拿出去,形成独立的方法。据此写出如下的实现代码,示例代码如下:把算法从报价方法里拿出去,形成独立的方法,这里调用了算法定义和角色结构示意图示例代码实例说明优缺点和环境
新客户和普通客户老客户大客户这样做的优点是:容易扩展,较好的维护。缺点是:如果有100种情况时,怎么做?定义和角色结构示意图示例代码实例说明优缺点和环境
3、策略模式下的解决方案:要使用策略模式来重写前面报价的示例,大致有如下改变: 首先需要定义出算法的接口。(策略接口) 然后把各种报价的计算方式单独出来,形成算法类。(策略实现) 对于Price这个类,把它当做上下文,在计算报价的时候,不再需要判断,直接使用持有的具体算法进行运算即可。选择使用哪一个算法的功能挪出去,放到外部使用的客户端去。(上下文)实例的结构图定义和角色结构示意图示例代码实例说明优缺点和环境
先看策略接口,示例代码如下:定义和角色结构示意图示例代码实例说明优缺点和环境
接下来看看具体的算法实现,不同的算法,实现也不一样,先看为新客户或者是普通客户计算应报的价格的实现,示例代码如下:定义和角色结构示意图示例代码实例说明优缺点和环境
老客户计算应报的价格的实现,示例代码如下:?定义和角色结构示意图示例代码实例说明优缺点和环境
大客户计算应报的价格的实现,示例代码如下:定义和角色结构示意图示例代码实例说明优缺点和环境
接下来看看上下文的实现,也就是原来的价格类,它的变化比较大,主要有:原来那些私有的,用来做不同计算的方法,已经去掉了,独立出去做成了算法类原来报价方法里面,对具体计算方式的判断,去掉了,让客户端来完成选择具体算法的功能新添加持有一个具体的算法实现,通过构造方法传入原来报价方法的实现,变化成了转调具体算法来实现定义和角色结构示意图示例代码实例说明优缺点和环境
定义和角色结构示意图示例代码实例说明优缺点和环境
写个客户端来测试运行一下,示例代码如下:定义和角色结构示意图示例代码实例说明优缺点和环境
目录Contents1234定义和角色结构示意图示例代码实例说明5优缺点和环境
优点:1、策略模式提供了管理相关的算法族的办法。恰当使用继
您可能关注的文档
最近下载
- 事业单位招聘综合知识和能力素质真题及答案.docx VIP
- 检验科SOP规范样本.pdf VIP
- 孕产妇死亡评审制度(最新版).doc VIP
- 精品解析:辽宁省沈阳市第四十三中学2025-2026学年上学期七年级数学期中考试试题(原卷版).docx VIP
- Ovation算法.ppt VIP
- DLT 5700-2014 城市居住区供配电设施建设规范.pdf VIP
- RCS-9613线路光纤纵差保护测控装置.doc VIP
- 2025年绵阳市中考语文试题卷(含答案解析).docx
- 2025最新党政领导干部拟任县处级资格考试试题及答案.docx VIP
- 新业态模式下如何认定劳动关系.docx VIP
原创力文档


文档评论(0)