用枚举优化if-else
提到优化if-else应该都想到的是策略模式,在网上找了一下,发现除了常用的方式,其实用枚举也可以实现策略,下面就是我写的一个例子,简单易懂。
public class mytest {
public static void main(String[] args) {
String type = "ONE";
int num = 6;
//用if-else的方式
// if ("ONE".equals(type)) {
// num=num+2;
// System.out.println("结果是:"+num);
// } else if ("TWO".equals(type)) {
// num=num-2;
// System.out.println("结果是:"+num);
// } else if ("THREE".equals(type)) {
// num=num*2;
// System.out.println("结果是:"+num);
// } else if ("FOUR".equals(type)) {
// num=num/2;
// System.out.println("结果是:"+num);
// }
OperatorTest.valueOf(type).apply(num);
}
}
/**
* 使用enum关键字创建枚举类
*/
enum OperatorTest {
ONE {
@Override
public void apply(int num) {
num=num+2;
System.out.println("结果是:"+num);
}
},
TWO {
@Override
public void apply(int num) {
num=num-2;
System.out.println("结果是:"+num);
}
},
THREE {
@Override
public void apply(int num) {
num=num*2;
System.out.println("结果是:"+num);
}
},
FOUR {
@Override
public void apply(int num) {
num=num/2;
System.out.println("结果是:"+num);
}
};
// 创建抽象方法
public abstract void apply(int num);
}