干掉多层 if else

当代码业务逻辑有多层 if else 时,不仅代码效率就会降低,而且也会影响代码美观,所以有没有方法可以解决这种多层 if 呢,答案肯定是有
1、使用享元模式+lamda
原代码:

if(key){            

}else if(key1){

}

优化后:

public class StreamTest {

    public static void main(String[] args) {

        Product pro = new Product();
        pro.setId(1);
        Map<String,ProductService> map = new HashMap<>();
        map.put("key", (param)->{param.setCreateDate(new Date());return param;});
        map.put("key1", (param)->{param.setId(19);;return param;});
        System.out.println(JSONObject.toJSONString(map.get("key1").excute(pro)));

    }
    
    public interface ProductService{
        Product excute(Product pro);
    }
}

原代码:

public class StreamTest {

    public static void main(String[] args) {

        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        int week = cal.get(Calendar.DAY_OF_WEEK) - 1;
        
        String today = null;
        switch(week){
            case 0:
                today = "周日";
                break;
            case 1 : 
                today = "周一"; 
                break;
            case 2 :
                today = "周二"; 
                break;
            case 3 :
                today = "周三"; 
                break;
            case 4 :
                today = "周四";
                break;
            case 5 :
                today = "周五"; 
                break;
            default:
                today = "周六";   
        }
        System.out.println(today);
    }
}

使用享元模式后:

public class StreamTest {

    public static void main(String[] args) {

        Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        int week = cal.get(Calendar.DAY_OF_WEEK) - 1;
        
        String [] weekday = new String[]{"周日","周一","周二","周三",
                "周四","周五","周六"};
        String today = weekday [ week ];
        System.out.println(today);
    }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 设计模式概述 在学习面向对象七大设计原则时需要注意以下几点:a) 高内聚、低耦合和单一职能的“冲突”实际上,这两者...
    彦帧阅读 9,153评论 0 14
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,930评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,399评论 19 139
  • 我想 我得好好的珍惜一次了 不要等到从身边溜走 才知道这是一个遗憾 一生
    承舒阅读 968评论 0 0
  • (以下都是使用命令行完成) 一、个人代码管理 1.进入工作目录 cd 目录名 2.初始化一个代码仓库 git in...
    余小丌阅读 3,408评论 0 2