在使用策略模式时,我们要创建相应的策略,然后根据不同的场景使用不同的策略,这是可以的,但毕竟那是一堆的策略类,使用起来代码的可读性、扩展性也就一般,这种情况下我们可以使用策略模式的升级版---策略枚举来解决上边的问题
枚举类:
public enum StrategyEnum {
ADD("+") {
@Override
public int exec(int a, int b) {
return a+b;
}
},
SUB("-") {
@Override
public int exec(int a, int b) {
return a-b;
}
},
MUTI("*") {
@Override
public int exec(int a, int b) {
return a*b;
}
};
StrategyEnum(String value) {
this.value = value;
}
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public abstract int exec(int a, int b);
}
测试类:
public class StrategyEnumTest {
public static void main(String[] args) {
System.out.println( StrategyEnum.ADD.exec(2,4));
System.out.println( StrategyEnum.SUB.exec(2,4));
System.out.println( StrategyEnum.MUTI.exec(2,4));
}
}
运行结果:
怎么样,这样的一堆策略是不是看起来很清爽,代码的可读性、可扩展性就高很多了
差点忘了,这个是从设计模式之禅这本书上温习时看到的,虽然简单,但是许多的简单技巧拼凑起来,你的代码就会不一样