美文网首页
策略模式

策略模式

作者: Coder_L | 来源:发表于2020-11-16 19:45 被阅读0次

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

    从开始学习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...);
        }
    
    }
    
    
    

    相关文章

      网友评论

          本文标题:策略模式

          本文链接:https://www.haomeiwen.com/subject/kgvzbktx.html