澳门新濠城唯一网址五分钟学完设计模式之策略模式,策略模式

发布时间:2019-10-06  栏目:编程  评论:0 Comments

总结成一句话就是对一个功能有不同的计算方式但都是为了获取一个最终的结果的模式,例如在类似京东在普通会员、黄金会员、钻石会员结算时候不同折扣的结算功能。

策略模式需要一下几个部分

1.策略接口

2.算法实现类若干个

3.算法执行类

author=jolting

一、概念

以下是代码截图

澳门新濠城唯一网址 1策略接口澳门新濠城唯一网址 2普通会员算法实现类澳门新濠城唯一网址 3高级会员算法实现类澳门新濠城唯一网址 4算法执行类澳门新濠城唯一网址 5使用算法执行类

通过以上的代码截图我们可以清楚的看出来一个策略设计模式是多么的简单,不需要太多的文字描述就可以总结出来以下几个注意点

A.算法执行类虽然可以设置不同的算法类,但是在执行的时候有且只有算法类在工作

B.我们在开发的时候当发现需要不同的计算方式来计算结果的时候,就果断使用策略模式,策略模式会圆你梦想

date=’2018-03-21′

  1、定义

  策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

  策略模式就要应对规则变化和新规则加入对程序带来的影响。

 澳门新濠城唯一网址 6

  通过接口可以避免直接调用规则,从而使得业务变化不会对规则产生影响,同时,添加新规则也不会影响业务流程。

  澳门新濠城唯一网址 7

在开始正文之前还是看一下美景,神清气爽下吧

  2、优点  

  • 策略模式提供了管理相关的算法族的办法。策略类的等级结构定义了一个算法或行为族。恰当使用继承可以把公共的代码转移到父类里面,从而避免重复的代码。

  • 策略模式提供了可以替换继承关系的办法。继承可以处理多种算法或行为。如果不是用策略模式,那么使用算法或行为的环境类就可能会有一些子类,每一个子类提供一个不同的算法或行为。但是,这样一来算法或行为的使用者就和算法或行为本身混在一起。决定使用哪一种算法或采取哪一种行为的逻辑就和算法或行为的逻辑混合在一起,从而不可能再独立演化。继承使得动态改变算法或行为变得不可能。

  • 使用策略模式可以避免使用多重条件转移语句。多重转移语句不易维护,它把采取哪一种算法或采取哪一种行为的逻辑与算法或行为的逻辑混合在一起,统统列在一个多重转移语句里面,比使用继承的办法还要原始和落后。

澳门新濠城唯一网址 8

  3、应用场景

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

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

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

留下评论

网站地图xml地图