策略模式
2016-10-21 本文已影响6人
zhaoyubetter
找出应用中,可能需要的变化的部分,将他们抽离出来,不和那些不需要变化的代码和混在一起;
需要变化的一部分,我们用接口来表示,针对接口编程,而不是具体实现;
如果某个类的某些行为会经常变化,如:交通工具的行为,自行车,摩托车,汽车,轮船等,他们的移动的行为是不一样的;
所以对于交通工具这个抽象类,把会变化的移动行为封装成接口;
再如:超市购物时候的折扣行为,把会变化的折扣行为封装成接口,用来满足不同购物金额对应的折扣需求;
通过这样的组合方式,来实现继承的功能,我是交通工具,我有一个行为是移动方式;
有一个比是一个更好;
定义#
策略模式定义了算法组,并分别对其进行封装,让彼此之间可以互相替换,此模式让算法的变化独立于使用算法的客户之外;
Paste_Image.pngContext: 表示上下文对象,含有一个Strategy抽象策略;
Strategy:表示策略类的抽象接口,这里有3个策略具体实例,并分别实现策略方法operate;
具体使用时,Context最终调用的是策略抽象接口,实现了面向接口编程;