zoukankan      html  css  js  c++  java
  • 工厂+模板方法设计模式

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

    工厂设计模式:Factory2

    import com.google.common.collect.Maps;
    import org.springframework.util.StringUtils;
    
    import java.util.Map;
    
    /**
     * 工厂设计模式
     */
    public class Factory2 {
        private static Map<String, AbstractHandler> strategyMap = Maps.newHashMap();
    
        public static AbstractHandler getInvokeStrategy(String str) {
            return strategyMap.get(str);
        }
    
        public static void register(String str, AbstractHandler handler) {
            if (StringUtils.isEmpty(str) || null == handler) {
                return;
            }
            strategyMap.put(str, handler);
        }
    }

     模板方法设计模式 AbstractHandler

    /**
     * 模板方法设计模式
     */
    public abstract class AbstractHandler implements InitializingBean {
    
        public void AAA(String name) {
            throw new UnsupportedOperationException();
        }
    
        public String BBB(String name) {
            throw new UnsupportedOperationException();
        }
    }

     模板方式:LiSiHandler2

    @Component
    public class LiSiHandler2 extends AbstractHandler {
    
        @Override
        public String BBB(String name) {
            // 业务逻辑B
            return "李四完成任务B";
        }
    
        @Override
        public void afterPropertiesSet() throws Exception {
            Factory2.register("李四", this);
        }
    }

      模板方式:TianQiHandler2

    import org.springframework.stereotype.Component;
    
    @Component
    public class TianQiHandler2 extends AbstractHandler {
    
        @Override
        public void AAA(String name) {
            // 业务逻辑A
            System.out.println("田七完成任务A");
        }
    
        @Override
        public void afterPropertiesSet() throws Exception {
            Factory2.register("田七", this);
        }
    }

     模板方式:WangWuHandler2

    import org.springframework.stereotype.Component;
    
    @Component
    public class WangWuHandler2 extends AbstractHandler {
    
        @Override
        public String BBB(String name) {
            // 业务逻辑B
            return "王五完成任务B";
        }
    
        @Override
        public void afterPropertiesSet() throws Exception {
            Factory2.register("王五", this);
        }
    }
  • 相关阅读:
    关于JDK和eclipse的安装和汉化
    关于Android SDK Manager更新速度慢的解决方法
    Navicat Premium 11破解补丁下载及安装方法
    win8.1下无法运行vc++6.0的解决方法
    在Editplus中配置java的(带包)编译(javac)和运行(java)的方法
    关于在Editplus中设置内容提示比如syso的快捷输出的方法
    关于win8/win8.1系统不能调节亮度的解决办法
    JDK的安装和Java环境变量配置
    关于classpath
    Genymotion模拟器的安装及常见问题解决方法
  • 原文地址:https://www.cnblogs.com/cb1186512739/p/14264657.html
Copyright © 2011-2022 走看看