多重条件语句不易维护, 而且出错的概率大大增强.使用策略模式后, 可以有其他模块决定采用何种策略, 策略家族对外提供的访问接口就是封装类, 简化了操作,同时避免了条件语句判断
扩展性良好....在现有的系统中增加一个策略太容易了, 只要实现接口就可以了, 其他的都不用修改,大大符合了OCP原则
策略模式的缺点:
策略类数量增多....我们可以使用其他模式来修正这个缺陷, 如工厂方法模式,代理模式或享元模式
策略模式的使用场景:
多个类只有在算法或行为上稍有不同的场景
算法需要自由切换的场景....4个, 则需要考虑使用混合模式, 解决策略类膨胀和对外暴露的问题, 否则日后的系统维护就会成为一个烫手山芋, 谁也不想接
----
策略模式是一个非常常用的模式, 但它单独使用的地方就比较少了, 因为他有致命缺陷...在实际项目中, 我们一般通过工厂方法模式来实现策略类的声明.