如何替换项目中的ifelse

场景1:条件不同执行业务逻辑不同:。

使用枚举替换ifelse,枚举类中调静态方法处理业务逻辑
  • 原代码
        User user=new User();
        user.setType("1");
        if("0".equals(user.getType())){
            System.out.println("处理教师业务");
        }else if("1".equals(user.getType())){
            System.out.println("处理学生业务");
        }else {
            System.out.println("处理家长业务");
        }
  • 使用枚举类替换后代码
        User user=new User();
        user.setType("1");
        UserTypeEnum.getUserTypeEnumByCode(user.getType()).changeUser(user);

场景2:业务逻辑相同条件不同使用不同变量。

使用map修改ifelse
  • 原代码
        User user=new User();
        user.setType("1");
        if("0".equals(user.getType())){
            System.out.println("处理教师业务");
        }else if("1".equals(user.getType())){
            System.out.println("处理学生业务");
        }else {
            System.out.println("处理家长业务");
        }
  • 替换后代码
        User user=new User();
        user.setType("1");
        System.out.println(map.get(user.getType()));

  • map
        Map map=new HashMap<>();
        map.put("0","处理教师业务");
        map.put("1","处理学生业务");
        map.put("2","处理家长业务");
  • 枚举类
public enum UserTypeEnum implements TestService {

    USER_TYPE_TEACHER("0","教师"){
        @Override
        public void changeUser(User user) {
            System.out.println("处理教师业务");
            System.out.println(StringUtils.isEmpty(user.toString()));
        }
    },
    USER_TYPE_STUDENT("1","学生"){
        @Override
        public void changeUser(User user) {
            System.out.println("处理学生业务");
            System.out.println(StringUtils.isEmpty(user.toString()));
        }
    },
    USER_TYPE_PARENT("2","家长"){
        @Override
        public void changeUser(User user) {
            System.out.println("处理家长业务");
            System.out.println(StringUtils.isEmpty(user.toString()));
        }
    };
    private String code;
    private String codeName;
    UserTypeEnum(String code, String codeName){
        this.code=code;
        this.codeName=codeName;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getCodeName() {
        return codeName;
    }

    public void setCodeName(String codeName) {
        this.codeName = codeName;
    }


    public static UserTypeEnum getUserTypeEnumByCode(String code){
        for(UserTypeEnum userTypeEnum : UserTypeEnum.values()){
            if(StringUtils.equals(code, userTypeEnum.getCode())){
                return userTypeEnum;
            }
        }
        return null;
    }
}

在这里简单介绍了两种场景下替换ifelse的方法。其实这两个方法都是相通的,愿我们早日找到放之四海而皆准之真理,从此消灭ifelse。

你可能感兴趣的:(java,代码优化)