策略模式

时间:2021-7-3 作者:qvyue

什么是策略模式?为什么要使用策略?

从开始学习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 map = new HashMap();

    @Resource
    private ApplicationContext context;

    @Constructor
    public void initContext() {
        Map beanMap = context.getBeansOfType(Strategy.class);
        beanMap.forEach(this.map::put);
    }

    public void invoke(String key, Object arg...) {
        pageMap.get(key).method(arg...);
    }

}


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。