设计模式 ( 十八 ) 策略模式Strategy(对象行为型) - guisu,程序人生。 逆水行舟,不进则退。 - 博客频道 - CSDN.pdfVIP

设计模式 ( 十八 ) 策略模式Strategy(对象行为型) - guisu,程序人生。 逆水行舟,不进则退。 - 博客频道 - CSDN.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2016/11/12 设计模式 ( 十八 ) 策略模式Strategy (对象行为型) - g uisu,程序人生。 逆水行舟,不进则退。 - 博客频道 - CSDN.NET 设计模式 ( 十八 ) 策略模式Strategy (对象行为型) [1] 20 12-05-12 15 :50 124 396人阅读 评论(4 3) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载。 设计模式 ( 十八 ) 策略模式Strategy (对象行为型)[2] 1.概述[3] [4]         在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法 或者策略,我们可以根据环境或者条件的 不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(H ard Coding)在一个类 中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体 的查找算法;当然也可以将这些查找算法封装在一个统一的方法中,通过if …else…或者等条件判断语句来进行选 择。这两种实现方法我们都可以称之为硬编码,如果需要增加一种新的查找算法,需要修改封装算法类的源代码; 更换查找算法,也需要修改客户端调用代码。在这个算法类中封装了大量查找算法,该类代码将较复杂,维护较为 困难。如果我们将这些策略包含在客户端,这种做法更不可取,将导致客户端程序庞大而且难以维护,如果存在大 量可供选择的算法时问题将变得更加严重。 例子1 :一个菜单功能能够根据用户的“皮肤”首选项来决定是否采用水平的还是垂直的排列形式。同事可以灵活增 加菜单那的显示样式。 例子2 :出行旅游:我们可以有几个策略可以考虑:可以骑自行车,汽车,做火车,飞机。每个策略都可以得到相 同的结果,但是它们使用了不同的资源。选择策略的依据是费用,时间,使用工具还有每种方式的方便程度 。 2.问题[5] 如何让算法和对象分开来,使得算法可以独立于使用它的客户而变化? 3.解决方案[6] [7] 策略模式 :定义一系列的算法, 把每一个算法封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用 它的客户而变化。(Policy)[8]Denea f amily of alg orithmsencapsulate each onemake them interchang eable. Strategy lets the alg orithmvary independently f rom clients that use it.  策略模式把对象本身和运算规则区分开来,其功能非常强大,因为这个设计模式本身的核心思想就是面向对象编程 的多形性的思想。 4.适用性[9] http://blog ./hg uisu/article/details/7558249/ 1/7 2016/11/12 设计模式 ( 十八 ) 策略模式Strategy (对象行为型) - g uisu,程序人生。 逆水行舟,不进则退。 - 博客频道 - CSDN.NET 当存在以下情况时使用Strategy模式 1)• 许多相关的类仅仅是行为有异。 “策略”提供了一种用多个行为中的一个行为来配置一个类的方法。即一个系 统需要动态地在几种算法中选择一种。 2)• 需要使用一个算法的不同变体。例如,你可能会定义一些反映不同的空间 / 时间权衡的算法。当这些变体实现 为一个算法的类层次时 , 可以使用策略模式。 [10] 3)• 算法使用客户不应该知道的数据。可使用策略模式以

您可能关注的文档

文档评论(0)

JuanHuang + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档