使用場景
項目中出現大量的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));