java设计模式策略模式.ppt

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java设计模式策略模式.ppt

一种常用的方法是硬编码(Hard Coding) 在这个算法类中封装了大量查找算法,该类代码将较复杂,维护较为困难。 * 策略模式通过接口或抽象类封装算法的标识,即在接口中定义一个抽象方法,实现该接口的类将实现接口中的抽象方法。 策略模式把行为和环境分开。 环境类负责维持和查询行为类,各种算法在具体的策略类中提供。 由于算法和环境独立开来,算法的增减,修改都不会影响到环境和客户端。 策略模式中,封装算法标识的接口称作策略,实现该接口的类称作具体 * 除了提供专门的查找算法类之外,还可以在客户端程序中直接包含算法代码,这种做法更不可取,将导致客户端程序庞大而且难以维护,如果存在大量可供选择的算法时问题将变得更加严重。 * 策略模式是一个比较容易理解和使用的设计模式,策略模式是对算法的封装,它把算法的责任和算法本身分割开,委派给不同的对象管理。策略模式通常把一个系列的算法封装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是“准备一组算法,并将每一个算法封装起来,使得它们可以互换”。 在策略模式中,应当由客户端自己决定在什么情况下使用什么具体策略角色。 策略模式仅仅封装算法,提供新算法插入到已有系统中,以及老算法从系统中“退休”的方便,策略模式并不决定在何时使用何种算法,算法的选择由客户端来决定。这在一定程度上提高了系统的灵活性,但是客户端需要理解所有具体策略类之间的区别,以便选择合适的算法,这也是策略模式的缺点之一,在一定程度上增加了客户端的使用难度。 * Strategy模式的角色: Strategy ????策略(算法)抽象。 ConcreteStrategy ????各 种策略(算法)的具体实现。 Context ????策略的外部封装类,或者说策略的容器类。根据不同 策略执行不同的行为。策略由外部环境决定。 * 上下文和具体策略是松耦合关系。因此上下文只知道它要使用某一个实现Strategy接口类的实例,但不需要知道具体是哪一个类。 策略模式满足“开-闭原则”。当增加新的具体策略时,不需要修改上下文类的代码,上下文就可以引用新的具体策略的实例。 * 1. 客户端必须知道所有的策略类,并自行决定使用哪一个策略类。这就意味着客户端必须理解这些算法的区别,以便适时选择恰当的算法类。换言之,策略模式只适用 于客户端知道所有的算法或行为的情况。 2. 策略模式造成很多的策略类。有时候可以通过把依赖于环境的状态保存到客户端里面,而将策略类设计成可共享的,这样策略类实例可以被不同客户端使用。换言 之,可以使用享元模式来减少对象的数量。 * 一个类定义了多种行为,并且这些行为在这个类中以多个条件语句的形式出现,可以使用策略模式避免在类中使用大量的条件语句。 程序不需要暴露复杂的、与算法相关的数据结构,可以使用策略模式封装算法。 需要使用一个算法的不同变体。 在软件中实现策略模型 ????? 1)对策略对象定义一个公共接口。 ????? 2)编写策略类,该类实现了上面的公共接口。 ?????? 3)策略对象的类中保存一个对策略对象的引用。 ?????? 4)略对象的类中,实现对策略对象的set和get方法。 * 一个类定义了多种行为,并且这些行为在这个类中以多个条件语句的形式出现,可以使用策略模式避免在类中使用大量的条件语句。 程序不需要暴露复杂的、与算法相关的数据结构,可以使用策略模式封装算法。 需要使用一个算法的不同变体。 在软件中实现策略模型 ????? 1)对策略对象定义一个公共接口。 ????? 2)编写策略类,该类实现了上面的公共接口。 ?????? 3)策略对象的类中保存一个对策略对象的引用。 ?????? 4)略对象的类中,实现对策略对象的set和get方法。 * java设计模式—— 策略模式(STRATEGY) * * 策略模式引入 在某些设计中,一个类的设计人员经常可能涉及这样的问题:由于用户需求的变化,导致经常需要修改类中某个方法的方法体,即需要不断地变化算法。例如需要多个算法实现查询功能。这时,我们可以利用策略模式来解决这一问题。 定义一系列算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 也称为政策模式(Policy) 策略模式定义 策略模式是处理算法的不同变体的一种成熟模式,策略模式通过接口或抽象类封装算法的标识,即在接口中定义一个抽象方法,实现该接口的类将实现接口中的抽象方法。 在策略模式中,封装算法标识的接口称作策略,实现该接口的类称作具体策略。 策略模式概述 策略模式的UML类图 (多用组合少用继承) 策略模式的结构中的三种角色 1、策略(Strategy)通常由一个接口或抽象类实现

文档评论(0)

2232文档 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档