if/else 赋值操作,过多的条件嵌套必然会导致代码维护繁琐困难,所以在开发过程中尽可能的避免多重if/else语句嵌套。
枚举(赋值)
/**
* if/else多重复用
* 赋值操作
*/
public enum Status{
START(0),PAUSE(1),END(2);
public int statueCode;
Status(int statueCode){
this.statueCode = statueCode;
}
}
public Status getCurrentState(String state){
return Status.valueOf(state);
}
public void setCurrentValues(int values){
getCurrentState("START").statueCode = values;
getCurrentState("PAUSE").statueCode = values + 1;
getCurrentState("END").statueCode = values + 2;
}
public int getCurrentCodeValues(Status status){
return status.statueCode;
}
使用多态
将不同的条件定义为一个子类,具体行为操作在对应条件里执行
public interface DayCallBack{
void providerMessage();
}
public class Monday implements ServerEnumClient.DayCallBack {
@Override
public void providerMessage() {
}
}
public class Sunday implements ServerEnumClient.DayCallBack {
@Override
public void providerMessage() {
}
}
public class DayCallBackSuper{
static Map<String, ServerEnumClient.DayCallBack> registerDayCallBack = new HashMap<>();
static {
registerDayCallBack.put("monday",new Monday());
registerDayCallBack.put("sunday",new Sunday());
}
public void setDay(String key){
ServerEnumClient.DayCallBack dayCallBack = registerDayCallBack.get(key);
if (dayCallBack == null) return;
dayCallBack.providerMessage();
}
}
public static void main(String[] args){
DayCallBackSuper dayCallBackSuper = new DayCallBackSuper();
dayCallBackSuper.setDay("sunday");
}
/**
* if/else多重复用
* 方法执行
*/
public enum Status{
START{
@Override
public void run(){
}
},PAUSE{
@Override
public void run(){
}
},END{
@Override
public void run(){
}
};
public abstract void run();
}
public static void main(String[] args){
Status start = Status.valueOf("END");
start.run();
}