策略模式的实现方法有很多,可以通过策略类if,else实现。下面是用枚举类实现策略模式的方法。
定义一个枚举类,枚举类有抽象方法,每个枚举都实现抽象方法。这个策略,实现方法是工具类的很实现,代码简单好理解
枚举实现策略
public enum TestUtilEnum {
AA("aa") {
@Override
public String execute(Query query) {
return AaUtils.test(query);
}
},
BB("bb") {
@Override
public String execute(Query query) {
return BbUtils.test(query);
}
};
private final String name;
/**
* 构造函数
*/
TestUtilEnum(String name) {
this.name =name;
}
public String getName() {
return name;
}
public abstract String execute(Query query);
public static TestUtilEnum fromName(String name) {
for (TestUtilEnum handler : values()) {
if (handler.getName().equals(name)) {
return handler;
}
}
throw new IllegalArgumentException("Invalid name: " + name);
}
}
测试调用
public static void main(String[] args) {
TestUtilEnum utilEnum = TestUtilEnum.fromName("aa");
Query query = new Query ()
utilEnum.execute(query);
}