1、 是指定义一系列算法,将每个算法都封装起来,并且使他们之间可以相互替换。
Spring 中在实例化对象的时候用到Strategy 模式,在SimpleInstantiationStrategy 有使用。
2、 特点:最终执行结果是固定的。执行过程和执行逻辑不一样。
3、 优点:遵循了开闭原则,扩展性良好。
缺点:随着策略的增加,对外暴露越来越多。
4、 应用场景:更换主题
public interface IFruit {
void buyFruit();
}
public class Apple implements IFruit {
@Override
public void buyFruit() {
System.out.println("买苹果");
}
}
public class Banana implements IFruit {
@Override
public void buyFruit() {
System.out.println("买香蕉");
}
}
public class Grape implements IFruit {
@Override
public void buyFruit() {
System.out.println("买葡萄");
}
}
public class Fruit {
private IFruit iFruit;
public Fruit(IFruit iFruit){
this.iFruit = iFruit;
}
public void buyFruit(){
iFruit.buyFruit();
}
}
public class StrategyTest {
public static void main(String[] args) {
Fruit fruit = new Fruit(new Apple());
fruit.buyFruit();
}
}