策略模式定义与应用场景分析.pdfVIP

  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文档。上传文档
查看更多

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策

略模式让算法独立于使用它的客户而独立变化。

—抽象策略角色:策略类,通常由一个接口或者抽象类实现。

—具体策略角色:包装了相关的算法和行为。

—环境角色:持有一个策略类的,最终给客户端调用。

Context(应用场景):

1、需要使用ConcreteStrategy的算法。

2、一个Strategy的实例。

3、负责动态设置运行时Strategy具体的实现算法。

4、负责跟Strategy之间的交互和数据传递。

Strategy(抽象策略类):

1、定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,Context使用这个

接口调用不同的算法,一般使用接口或抽象类实现。

ConcreteStrategy(具体策略类):

2、实现了Strategy定义的接口,具体的算法实现。

应用场景:

1、多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执

行的行为。

2、需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现。

3、对客户隐藏具体策略(算法)的实现细节,彼此完全独立。

优点:

1、策略模式了管理相关的算法族的办法。策略类的等级结构定义了一个算法或行为

族。恰当使用继承可以把公共的代码转移到父类里面,从而避免重复的代码。

2、策略模式了可以替换继承关系的办法。继承可以处理多种算法或行为。如果不是

用策略模式,那么使用算法或行为的环境类就可能会有一些子类,每一个子类一个不同

的算法或行为。但是,这样一来算法或行为的使用者就和算法或行为本身混在一起。决定使

用哪一种算法或采取哪一种行为的逻辑就和算法或行为的逻辑混合在一起,从而不可能再独

立演化。继承使得动态改变算法或行为变得不可能。

3、使用策略模式可以避免使用多重条件转移语句。多重转移语句不易,它把采取哪

一种算法或采取哪一种行为的逻辑与算法或行为的逻辑混合在一起,统统列在一个多重转移

语句里面,比使用继承的办法还要原始和。

缺点:

1、客户端必须知道所有的策略类,并自行决定使用哪一个策略类。这就意味着客户端必须

理解这些算法的区别,以便适时选择恰当的算法类。换言之,策略模式只适用于客户端知道

所有的算法或行为的情况。

2、策略模式造成很多的策略类,每个具体策略类都会产生一个新类。有时候可以通过把

依赖于环境的状态保存到客户端里面,而将策略类设计成可共享的,这样策略类实例可以被

不同客户端使用。换言之,可以使用享元模式来减少对象的数量。

策略模式定义了一系列的算法,把每个算法封装起来,并使它们还可以相互替换。策略模式让

算法独立于使用它的客户而独立变化。

—抽象角色策略:策略类,通常由一个接口或者抽象类实现。—

具体策略角色:包装了相关的算法和行为。—环境角色:持有

一个策略类的,最终给客户端调用。

上下文(应用场景):

1、使用ConcreteStrategy的算法。2、一个策略的实例。3、负责动态

设置运行时策略的实现算法。4、负责跟策略之间的交互和数据传递。策略(抽象策略类):

1、需要定义一个公共接口,各种不同的算法以不同的方式实现这个接口,Context使用

这个接口调用不同的算法,一般使用接口或抽象类实现。ConcreteStrategy(具体策略

类):2、实现了策略定义的接口,具体的算法实现。

应用场景:

1、多个类只区别在表现行为不同,可以使用策略模式,在运行时动态具体选择要执行的行

为。2、需要在不同情况下使用不同的策略(算法),或者策略还可

文档评论(0)

159****9610 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:6044052142000020

1亿VIP精品文档

相关文档