概念

Strategy 用来允许在运行时动态地选择算法或操作的不同实现。通常,在抽象类中实现任何公共行为,而具体子类提供那些有差异的行为。客户机一般知道可用的不同策略,并且可以在其中选择。

举例

策略接口
public interface IStrategy {
    void operate();
}
策略A
public class StrategyA implements IStrategy{
    @Override
    public void operate() {
        System.out.println("我是解决问题的策略A");
    }
}
策略B
public class StrategyB implements IStrategy{

    @Override
    public void operate() {
        System.out.println("我是解决问题的策略B");
    }

}
过渡类(中间层)
public class Context {
    private IStrategy iStrategy;
    public Context(IStrategy iStrategy) {
        this.iStrategy = iStrategy;
    }
    public void execute(){
        iStrategy.operate();
    }
}
执行类:RunMain
public class RunMain {
    public static void main(String[] args){
        IStrategy iStrategyA = new StrategyA();
        Context context0 =new Context(iStrategyA);
        context0.execute();
        IStrategy iStrategyB = new StrategyB();
        Context context1 = new Context(iStrategyB);
        context1.execute();
    }
}
结果
我是解决问题的策略A
我是解决问题的策略B