美文网首页
关于if_else if .... 优化

关于if_else if .... 优化

作者: William_Wei007 | 来源:发表于2019-05-18 13:42 被阅读0次

    优化之前的代码

    略写代码 大致意思:从数据库,按照不通的类型,调用不同的方法.    
    
    //注入 接口 (查询db的接口)     
        @Autowired
        StatisBatchStatusMapper; 
    
        
        public void  xxx(){
        
        
        List<String> batchNumList = Lists.newArrayList();
            if(infTypeEnum.equals(InfTypeEnum.USER_INFO)){
                batchNumList= statisBatchStatusMapper.getUserInfoBatchNum();
            }else if(infTypeEnum.equals(InfTypeEnum.PRODUCT)){
                batchNumList=statisBatchStatusMapper.getProductBatchNum();
            }else if(infTypeEnum.equals(InfTypeEnum.TRANSACTION_DETAILS)){
                batchNumList = statisBatchStatusMapper.getTransactionDetailsBatchNum();
            }else if(infTypeEnum.equals(InfTypeEnum.PRODUCT_STATUS)){
             ...
              还有好几个判断...赋值
            }
        
        
            ....略
        }
    

    闲来无事, 突然想到貌似if .. else if ..这类的可以进行优化,

    于是看了一些文章,感觉适用我的方法, 把一些数据,放到map中
    就可以了 优化之后...

    此处设计到查询数据库, 所以利用了 “类” 实现 “InitializingBean” 这个接口, 然后实现 抽象方法(afterPropertiesSet())来进行获取数据.

    弊端就是项目启动初始化就会去加载这些. 如果用不到就浪费了.

     
        InfTypeEnum -- 枚举类型
        
        
        private static Map<InfTypeEnum, List<String>> handlerMap = new HashMap<>(12);
        
            
            
             @Override
        public void afterPropertiesSet() throws Exception {
    
            --  虽然是接口,但是spring 会自动进行实例化
            StatisBatchStatusMapper statisBatchStatusMapper=  SpringContextHolder.getApplicationContext().getBean(StatisBatchStatusMapper.class);
    
            handlerMap.put(InfTypeEnum.USER_INFO,statisBatchStatusMapper.getUserInfoBatchNum());
            handlerMap.put(InfTypeEnum.PRODUCT,statisBatchStatusMapper.getProductBatchNum());
            handlerMap.put(InfTypeEnum.PRODUCT_STATUS,statisBatchStatusMapper.getProdutStatusBatchNum());
            handlerMap.put(InfTypeEnum.REPAYMENT_PLAN,statisBatchStatusMapper.getRepaymentPlanBatchNum());
            handlerMap.put(InfTypeEnum.PURCHASE_INFO,statisBatchStatusMapper.getPurchaseInfoBatchNum());
            handlerMap.put(InfTypeEnum.PURCHASE_OPT,statisBatchStatusMapper.getPurchaseOptBatchNum());
            handlerMap.put(InfTypeEnum.RIGHT_INITIAL,statisBatchStatusMapper.getTrightInitialBatchNum());
           
           .....
    
        }
        
        经过上面的修改, 
        
        可以在调用处,直接就 通过map 的get("参数")方法获取相应的数据了.
        
        简洁明了...
    
    
    

    相关文章

      网友评论

          本文标题:关于if_else if .... 优化

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