1.设计时抽出变化的部分
2.针对接口编程,而非实现编程
3.多用组合,少用继承
策略模式定义了算法族,分别封装起来,让他们之间可以互相转换,此模式让算法的变化独立于使用算法的客户
策略模式尽管很灵活,很显然相应的增加了代码实现上的复杂程度。软件设计没有银弹,只有真正相对合适的恰到好处的结构。
软件在开发前及开发后的时间周期内,开发后的运维更新时间明显会更久,所以一个高可用灵巧的面向变化的结构尤为重要。
典型的使用场景在多if else情况下通过多态来更优雅实现
public strategyChoose(String mainName){
switch (name){
case "A":
story = new StoryB(name);
break;
case "B":
story = new StoryA(name);
break;
default:
story = new StoryB(name);
break;
}
}