使用场景
项目中出现大量的if…else的判断,根据传参不同做不同的实现,这样就会显的代码很臃肿,耦合性高。
消除if…else的方法有很多,包括命令模式、规则引擎、简单工厂等。接下来会介绍的一种方法是使用枚举来处理这样的大量判断。
使用枚举消除if…else
1、首先定义一个枚举类Operator
,枚举类里面需要定义一个方法public abstract String excute(String datas);
2、在枚举类里面加上所有情况的实现:
public enum Operator {
UP{
@Override
public String excute(String datas) {
return datas.toUpperCase();;
}
},
DOWN{
@Override
public String excute(String datas) {
return datas.toLowerCase();
}
};
//更多实现
public abstract String excute(String datas);
}
3、定义一个类来调用枚举类里面的方法:
public class Executor {
public String apply(String datas,Operator operator){
return operator.excute(datas);
}
}
4、最后在具体的代码里面去引用定义的类,根据传参的不同来调用枚举类里面的不同实现:
//operator是传过来的判断条件 UP、DOWN
Executor executor = new Executor();
String result = executor.apply(datas, Operator.valueOf(operator));