跳到主要内容

设计模式之策略模式

策略模式定义

策略模式(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