- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
END 第25章 策略模式 刘 伟 weiliu_china@yahoo.cn 本章教学内容 策略模式 模式动机与定义 模式结构与分析 模式实例与解析 模式效果与应用 模式扩展 策略模式 模式动机 完成一项任务,往往可以有多种不同的方式,每一种方式称为一个策略,我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。 在软件开发中也常常遇到类似的情况,实现某一个功能有多个途径,此时可以使用一种设计模式来使得系统可以灵活地选择解决途径,也能够方便地增加新的解决途径。 策略模式 模式动机 策略模式 模式动机 在软件系统中,有许多算法可以实现某一功能,如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法;当然也可以将这些查找算法封装在一个统一的方法中,通过if…else…等条件判断语句来进行选择。这两种实现方法我们都可以称之为硬编码,如果需要增加一种新的查找算法,需要修改封装算法类的源代码;更换查找算法,也需要修改客户端调用代码。在这个算法类中封装了大量查找算法,该类代码将较复杂,维护较为困难。 策略模式 模式动机 除了提供专门的查找算法类之外,还可以在客户端程序中直接包含算法代码,这种做法更不可取,将导致客户端程序庞大而且难以维护,如果存在大量可供选择的算法时问题将变得更加严重。 为了解决这些问题,可以定义一些独立的类来封装不同的算法,每一个类封装一个具体的算法,在这里,每一个封装算法的类我们都可以称之为策略(Strategy),为了保证这些策略的一致性,一般会用一个抽象的策略类来做算法的定义,而具体每种算法则对应于一个具体策略类。 策略模式 模式定义 策略模式(Strategy Pattern):定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。策略模式是一种对象行为型模式。 策略模式 模式定义 Strategy Pattern: Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it. Frequency of use: medium high 策略模式 模式结构 策略模式 模式结构 策略模式包含如下角色: Context: 环境类 Strategy: 抽象策略类 ConcreteStrategy: 具体策略类 策略模式 模式分析 策略模式是一个比较容易理解和使用的设计模式,策略模式是对算法的封装,它把算法的责任和算法本身分割开,委派给不同的对象管理。策略模式通常把一个系列的算法封装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是“准备一组算法,并将每一个算法封装起来,使得它们可以互换”。 策略模式 模式分析 不使用策略模式的代码: public class Context { …… public void algorithm(String type) { ...... if(type == strategyA) { //算法A } else if(type == strategyB) { //算法B } else if(type == strategyC) { //算法C } ...... } …… } 策略模式 模式分析 重构之后的抽象策略类: public abstract class AbstractStrategy { public abstract void algorithm(); } 策略模式 模式分析 重构之后的具体策略类: public class ConcreteStrategyA extends AbstractStrategy { public void algorithm() { //算法A } } 策略模式 模式分析 重构之后的环境类: public class Context { private AbstractStrategy s
您可能关注的文档
- 旅游区位非优区的旅游业发展研究_以山西运城为例.pdf
- 1、企业研究开发费用税前扣除政策.ppt
- 1.1回归分析的基本思想及其初步应用学习目标1了解随机.ppt
- 旅游资源与环境研究-第4讲-人文旅游资源与环境:中国.ppt
- 马克思主义哲学原理课件第六章社会主义社会及其发展.ppt
- 1目的:通过编写可变分区存储模拟系统掌握可变分区存储.ppt
- 煤的综合利用31735.ppt
- 3S技术在地理实践中的运用——以紫金山的等高线和三维立.doc
- 4麻风病的误诊和处理作者.ppt
- 模拟滤波器的设计92522.ppt
- 实验室危废随意倾倒查处规范.ppt
- 实验室危废废液处理设施规范.ppt
- 实验室危废处置应急管理规范.ppt
- 初中地理中考总复习精品教学课件课堂讲本 基础梳理篇 主题10 中国的地理差异 第20课时 中国的地理差异.ppt
- 初中地理中考总复习精品教学课件课堂讲本 基础梳理篇 主题10 中国的地理差异 第21课时 北方地区.ppt
- 危险废物处置人员防护培训办法.ppt
- 危险废物处置隐患排查技术指南.ppt
- 2026部编版小学数学二年级下册期末综合学业能力测试试卷(3套含答案解析).docx
- 危险废物处置违法案例分析汇编.ppt
- 2026部编版小学数学一年级下册期末综合学业能力测试试卷3套精选(含答案解析).docx
最近下载
- 《国际会计科目中英文对照》.docx VIP
- #财税政策激励企业技术创新的理论与实证分析.pdf VIP
- 人教版小学二年级(上)期末数学试卷.doc VIP
- (高清版)DB11∕T 1939-2021 捕食性天敌繁育及释放技术规范.pdf VIP
- 2025年春新人教版化学九年级下册全册教案.pdf
- TCAQ10201-2024质量管理小组活动准则_可搜索.pdf VIP
- 《GB_T 43789.32-2024电子纸显示器件 第3-2部分:光电性能测试方法》专题研究报告.pptx VIP
- DB11T 1939-2021捕食性天敌繁育及释放技术规范.docx VIP
- 2025至2030中国生猪行业发展分析及投资前景与战略规划报告(版).docx VIP
- 化工生产安全法律法规解析.pptx VIP
原创力文档


文档评论(0)