策略模式-枚举实现
策略模式的实现方法有很多,可以通过策略类if,else实现。下面是用枚举类实现策略模式的方法。
定义一个枚举类,枚举类有抽象方法,每个枚举都实现抽象方法。这个策略,实现方法是工具类的很实现,代码简单好理解
枚举实现策略
public enum TestUtilEnum {AA("aa") {@Overridepublic String execute(Query query) {return AaUtils.test(query);}},BB("bb") {@Overridepublic 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);
}