策略模式-枚举实现

策略模式的实现方法有很多,可以通过策略类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);

}

相关推荐
白鸽(二般)4 小时前
MinIO Java Client API
java·开发语言
软萌萌的15 小时前
Java Spring Boot 修改yml配置&加载顺序规则
java·spring boot·python
IT小盘6 小时前
13-企业Prompt模板-角色任务约束与输出格式
java·前端·prompt
爱敲键盘的猴子6 小时前
Java并发编程 -- volatile
java·java并发
plainGeekDev7 小时前
工厂模式 → Hilt
android·java·kotlin
plainGeekDev7 小时前
Application 单例 → Hilt Singleton
android·java·kotlin
888CC++8 小时前
C语言与C++的区别:从面向过程到面向对象
java·c语言·c++
学者猫头鹰9 小时前
分布式事务实战教程
java·分布式
heimeiyingwang9 小时前
【架构实战】Kubernetes调度器深度剖析:从Pod调度到自定义调度器
java·架构·kubernetes
纳兰青华11 小时前
回文侦探:三种境界破解最长回文子串
java·算法·动态规划