策略模式通俗来讲就是同一接口的不同实现
抽象策略类(Strategy)
public interface Strategy {
void execute(Object var1,Object var2);
}
具体策略类(Evaluation1):1
@Component("evaluation1")
public class Evaluation1 implements Strategy {
@Override
public void execute(Object var1,Object var2) {
//todo 业务逻辑
System.out.print("策略类1");
}
}
具体策略类(Evaluation2):2
@Component("evaluation2")
public class Evaluation2 implements Strategy {
@Override
public void execute(Object var1,Object var2) {
//todo 业务逻辑
System.out.print("策略类2");
}
}
上下文类(Context)
@Component
public class BeanContext {
@Autowired
// 将所有类型为Strategy的bean注入进来
Map beans = new ConcurrentHashMap<>();
Strategy strategy;
public BeanContext setStrategy(String type) {
this.strategy = beans.get(type);
return this;
}
public void execute(Object var1,Object var2) {
strategy.execute(var1, var2);
}
}
具体调用
String strategy1 = "evaluation1";
new BeanContext().setStrategy(strategy).execute(var1, var2);
System.out.print("-------------------------------------")
String strategy2 = "evaluation2";
new BeanContext().setStrategy(strategy).execute(var1, var2);
输出结果
策略类1
-------------------------------------
策略类2



