策略模式的實現方法有很多,可以通過策略類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);
? ? }