什么是策略模式?为什么要使用策略?
从开始学习java编程,我们就学习了if...else...,针对不同的条件执行不同的逻辑。对于一些简单的逻辑还好,如果有十多种条件,写长篇幅的if...else...就会很low,策略模式可以优雅的替换掉大篇幅的if...else...代码块,针对不同的条件执行不同的策略。
策略模式简单实现
// 定义策略接口
public interface Strategy {
/**
* 策略方法
*/
void method();
}
实现不同策略
@Service(value = "strategyA")
public class StrategyA implements Strategy {
/**
* 策略方法
*/
@Override
public void method() {
System.out.println("我是A策略实现方案!");
}
}
@Service(value = "strategyB")
public class StrategyB implements Strategy {
/**
* 策略方法
*/
@Override
public void method() {
System.out.println("我是B策略实现方案!");
}
@Service(value = "strategyC")
public class StrategyC implements Strategy {
/**
* 策略方法
*/
@Override
public void method() {
System.out.println("我是C策略实现方案!");
}
}
// 定义策略上下文
@Component
public class StrategyContext {
private final Map<String, Strategy> map = new HashMap<>();
@Resource
private ApplicationContext context;
@Constructor
public void initContext() {
Map<String, Strategy> beanMap = context.getBeansOfType(Strategy.class);
beanMap.forEach(this.map::put);
}
public void invoke(String key, Object arg...) {
pageMap.get(key).method(arg...);
}
}
网友评论