定义
策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类,视实际需求是否添加),提供辅助函数。
角色
- Context: 环境类
- Strategy: 抽象策略类
- ConcreteStrategy: 具体策略类
实例
定义抽象策略角色
public abstract class Strategy {
public abstract void show();
}
定义具体策略角色
public class StrategyA extends Strategy {
@Override
public void show() {
System.out.println("use strategy A...");
}
}
public class StrategyB extends Strategy {
@Override
public void show() {
System.out.println("use strategy B...");
}
}
public class StrategyC extends Strategy {
@Override
public void show() {
System.out.println("use strategy C...");
}
}
定义环境角色
public class Context {
private Strategy strategy;
public Context(String str) {
switch (str){
case "A":
strategy = new StrategyA();
break;
case "B":
strategy = new StrategyB();
break;
case "C":
strategy = new StrategyC();
break;
}
}
public void chooseStrategy(){
strategy.show();
}
}
测试
public class Test {
public static void main(String[] args) {
Context context = new Context("A");
context.chooseStrategy();
}
}
输出结果
use strategy A...