zoukankan      html  css  js  c++  java
  • 工厂+策略设计模式

    有时后经常需要写很多的if判断语句,导致了代码的十分冗余,可读性不高,下面以工厂设计模式+策略设计模式提供一种可替代的写法,简化代码

    工厂类:Factory

    /**
     * 工厂设计模式
     */
    public class Factory {
        private static Map<String, Handler> strategyMap = Maps.newHashMap();
    
        public static Handler getInvokeStrategy(String name) {
            return strategyMap.get(name);
        }
    
        public static void register(String name, Handler handler) {
            if (StringUtils.isEmpty(name) || null == handler) {
                return;
            }
            strategyMap.put(name, handler);
        }
    }

     策略接口:

    import org.springframework.beans.factory.InitializingBean;
    
    /**
     * 策略设计模式
     */
    public interface Handler extends InitializingBean {
    
        public void AAA(String name);
    
    }
    具体实现的一些策略 KangBaHandler
    @Component
    public class KangBaHandler implements Handler {
    
        @Override
        public void AAA(String name) {
            // 业务逻辑A
            System.out.println("亢八完成任务");
        }
    
        @Override
        public void afterPropertiesSet() throws Exception {
            Factory.register("亢八", this);
        }
    }
    具体实现的一些策略 LiSiHandler
    import org.springframework.stereotype.Component;
    
    @Component
    public class LiSiHandler implements Handler {
    
        @Override
        public void AAA(String name) {
            // 业务逻辑A
            System.out.println("李四完成任务");
        }
    
        @Override
        public void afterPropertiesSet() throws Exception {
            Factory.register("李四", this);
        }
    }
    具体实现的一些策略 TianQiHandler
    import org.springframework.stereotype.Component;
    
    @Component
    public class TianQiHandler implements Handler {
    
        @Override
        public void AAA(String name) {
            // 业务逻辑A
            System.out.println("田七完成任务");
        }
    
        @Override
        public void afterPropertiesSet() throws Exception {
            Factory.register("田七", this);
        }
    }
    具体实现的一些策略 WangWuHandler
    import org.springframework.stereotype.Component;
    
    @Component
    public class WangWuHandler implements Handler {
    
        @Override
        public void AAA(String name) {
            // 业务逻辑A
            System.out.println("王五完成任务");
        }
    
        @Override
        public void afterPropertiesSet() throws Exception {
            Factory.register("王五", this);
        }
    }
    具体实现的一些策略 ZhangSanHandler
    import org.springframework.stereotype.Component;
    
    @Component
    public class ZhangSanHandler implements Handler {
    
        @Override
        public void AAA(String name) {
            // 业务逻辑A
            System.out.println("张三完成任务");
        }
    
        @Override
        public void afterPropertiesSet() throws Exception {
            Factory.register("张三", this);
        }
    }


























  • 相关阅读:
    sql中触发器的使用
    sql中优化查询
    sql中case when语句的使用
    CSRF学习小结
    javascript正则表达式笔记
    elementUI单选框获取值
    elementUI内置过渡(折叠)
    elementUI内置缩放过渡(缩放)
    elementUi内置过渡动画(淡入)
    创建koa2项目
  • 原文地址:https://www.cnblogs.com/cb1186512739/p/14264616.html
Copyright © 2011-2022 走看看