开发者社区 问答 正文

Java代码多分支语句优化

1.项目背景
一个controller,一个serivce,多个dao层
service里面更具用户的不同参数调用不同的dao进行实例化,时候在调用方法。
2.不要问为什么设计,那是因为一个模块对应37张表,用户根据下拉选择输入不同的表单(说白点,点击页面新增弹出下拉框,让用户选择填写那张表单,再来一句,各个表之间没有相同的字段),所以此模块肯定是一个controller,一个service,各个dao对应不同的表进行增删改查操作
3.所以在service层必然有一个语句需要判断实例化那个dao,用注入也行
if(flag == dao1){

}else if(flag == dao2){

}else if(flag == dao3){

}else if(flag == dao4){

}else if(flag == dao5){

}else if(flag == dao6){

}
.就要写25个(不管是switch还是if都避免不了)
4.所以这样的方式有没有好一点的方式进行处理,不用写这么多的判断。

展开
收起
蛮大人123 2016-03-12 11:48:57 2419 分享 版权
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪
    interface dao
    {
        crdu() ;
    }
    
    class ConcreteDao implements dao
    {
        crdu(){...} ;
    }
    
    class Service
    {
        private Dao dao ;
    
        public void set(Dao dao){}
    
        public void service(){dao.service();}
    }
    
    class ServiceControl
    {
        private HashMap<Integer , Dao> map ;
        private Service service ;
    
        public ServiceControl()
        {
            //读xml表初始化标识与dao的对应
        }
    
        public void service(int flag)
        {
            //根据flag来选择不同的dao注入到service中
            Dao dao = map.get(flag) ;
            service.set(dao) ;
            service.service() ;
        }
    }

    然后control层直接嗲用servicecontrol就可以了, 这样control层就和dao解耦了, 两边的修改互不影响, 通过xml进行协调.

    2019-07-17 19:00:37
    赞同 展开评论