策略?策略模式?
策略其实我们生活中处处都存在策略的足迹,打个比方说,我们出门的时候会选择不同的出行方式,比如骑自行车、坐公交、坐火车、坐飞机、坐火箭等等,这些出行方式,每一种都是一个策略。还有就是我们去商场购物的时候,有满减的情况、也有打折的情况、也有返利的情况,这些都是商家执行的一种策略,每一个策略都达到一个效果就是有助于促销,每一个策略之间都可以相互替换。策列模式它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。
何时使用?
1.多个类只有算法或行为上稍有不同的时候
2.算法需要自由切换的时候
优缺点
优点
1.算法可以自由切换
2.避免使用多重条件判断(如果不用策略模式我们可能会使用多重条件语句,不利于维护)
3.扩展性良好,增加一个策略只需实现接口即可
缺点
1.策略类数量会增多,每个策略都是一个类,复用的可能性很小
2.所有的策略类都需要对外暴露