- 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/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]De nea 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)• 算法使用客户不应该知道的数据。可使用策略模式以
您可能关注的文档
- LEC8 虚拟存储管理.pdf
- LEC11 并发程序设计(PV操作习题讲解).pdf
- LEC11 并发程序设计(独木桥问题).pdf
- LEC11 并发程序设计(含PV操作 管程 消息).pdf
- LEC13 并行处理与操作系统设计.pdf
- OO的五大原则是指SRP、OCP、LSP、DIP、ISP_立崖_新浪博客.pdf
- STP(生成树协议)_百度百科.pdf
- STP生成树协议之根端口 指定端口 阻塞端口 - HadoopSpark - 博客频道 - CSDN.pdf
- STP协议_百度百科.pdf
- 操作系统第二章应用题参考答案.2014.pdf
- 辽宁省阜新市2026届九年级上学期1月期末考试道德与法治试卷(含答案).pdf
- 2026届江苏省启东中学高三上学期第二次月考历史试题(含答案).pdf
- 吉林省吉林市舒兰、蛟河、磐石、伊通四所友好学校2025-2026学年高一上学期12月份联合考试思想政治试卷(含解析).pdf
- 第4课《天净沙秋思》课件(共23张PPT)2025-2026学年统编版语文七年级上册.pptx
- 2025-2026学年上学期山东省临沂市平邑县地方镇第二初级中学等六校联合九年语文12月份月考试卷(含答案).pdf
- 四川省广安2025-2026学年上学期高三一模历史试卷(无答案).pdf
- 二年级上册第一单元习作 有趣的动物 课件(共30张PPT).pptx
- 统编版语文三年级上册第1课《大青树下的小学》课件(共22张PPT).pptx
- 统编版语文三年级上册第2课《花的学校》课件(共19张PPT).pptx
- 山东省德州市武城县二校联考2025-2026学年八年级上学期第二次月考历史试卷(含答案).pdf
最近下载
- 浙江省名校联合体2025-2026学年高一上学期12月月考数学(含答案).docx
- 2024-2025学年四川省成都市金牛区北师大版四年级上册期末考试数学试卷(含答案解析).pdf
- 城市黑臭水体整治工作指南培训-黑臭水体排查、整治及评估方案制定.pdf VIP
- 重庆《建设工程消防设计常见错误》(2024.3).docx
- 安徽省 2021 年普通高等学校专升本招生考试《大学英语》冲刺期测试题 (1).docx VIP
- 招标代理机构服务方案.docx VIP
- 眼科学复习笔记10版--郑汉龙.pdf VIP
- 操作规程和工艺控制指标检查考核制度.docx VIP
- 学习党的二十届四中全会精神测试题3份附答案.docx VIP
- 安徽省六安市金安区六安皋城中学八年级上学期11月期中数学试题(原卷版)-A4.docx VIP
原创力文档


文档评论(0)