プロジェクト内の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を2つのシーンで置き換える方法を簡単に紹介した.実はこの2つの方法はすべて通じ合っていて、私达が早く四海に放してすべて准じた真理を探し当てて、それからifelseを消灭することを望みます.