- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、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
您可能关注的文档
- 第一章 工作分析导论.ppt
- 第一章 电视艺术的特征和功用.ppt
- 第一章 财政的概念(财政学-杨志安).ppt
- 第一课时 化学实验安全 过滤和蒸发.ppt
- 第一届启智杯真题及答案详解.pdf
- 第一单元_古书的注解.ppt
- 第五章中国影视艺术的发展历程.ppt
- 第五章拉伸、剪切与挤压的强度计算.ppt
- 第五章:大众传播.ppt
- 第五章 文献线索、全文文献检索.ppt
- 济南一机床集团有限公司校园招聘模拟试题附带答案详解审定版.docx
- 济南一机床集团有限公司校园招聘模拟试题附带答案详解完美版.docx
- 济南一机床集团有限公司校园招聘模拟试题附带答案详解必威体育精装版.docx
- 济南二机床集团有限公司校园招聘85人公开引进高层次人才和急需紧缺人才笔试参考题库答案详解版学生专用.docx
- 济南一机床集团有限公司校园招聘模拟试题附带答案详解带答案.docx
- 济南一机床集团有限公司校园招聘模拟试题附带答案详解完整.docx
- 济南一机床集团有限公司校园招聘模拟试题附带答案详解汇编.docx
- 肠外营养配置规范.pptx
- 济南一机床集团有限公司校园招聘模拟试题附带答案详解学生专用.docx
- 济南二机床集团有限公司校园招聘85人公开引进高层次人才和急需紧缺人才笔试参考题库答案详解版一套.docx
最近下载
- 19S306图集—居住建筑卫生间同层排水系统安装.pdf
- (自考财务管理学00067最全公式整理.doc VIP
- 《氧化还原反应》优教课件(第一课时).pptx VIP
- 异常早期妊娠超声诊断与鉴别诊断幻灯片.ppt VIP
- 00067财务管理学公式.pdf VIP
- 2025福建厦门大学资产与后勤事务管理处工程管理人员招聘2人笔试备考题库及答案解析.docx
- 2024年教师批评与自我批评发言稿范本(3篇).docx VIP
- 2024年小学党员教师批评与自我批评发言稿12篇.docx VIP
- 2024年教师党员个人批评与自我批评发言稿.docx VIP
- Unit 5 Dinner is ready Part B Let’s talk单元整体教学设计.docx
文档评论(0)