设计模式之策略模式
策略模式定义
策略模式(Strategy Pattern)即定义一系列的算法,使之相互可以替换,而不影响程序运行。策略模式和状态模式的区别在于,状态之间相互关联,每个状态本身可以决定是否要转换到其他状态。而不同的策略之间,由使用者决定如何切换。
策略模式的实现
// 策略接口
public interface Strategy {
public void something();
}
// 策略上下文
public class Context {
private Strategy strategy;
public Strategy getStrategy() {
return strategy;
}
public void setStrategy(Strategy strategy) {
this.strategy = strategy;
}
public void doAction(){
this.strategy.something();
}
}
// 策略A
public class StrategyA implements Strategy {
@Override
public void something() {
System.out.println("策略A");
}
}
// 策略B
public class StrategyB implements Strategy {
@Override
public void something() {
System.out.println("策略B");
}
}
测试:
public static void main(String[] args) throws Exception {
Context context = new Context();
// 切换到策略A
context.setStrategy(new StrategyA());
context.doAction();
// 切换到策略A
context.setStrategy(new StrategyB());
context.doAction();
}
结果:
策略A
策略B