策略模式-枚举实现

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

}

相关推荐
初次攀爬者1 小时前
RocketMQ在Spring Boot上的基础使用
java·spring boot·rocketmq
花花无缺1 小时前
搞懂@Autowired 与@Resuorce
java·spring boot·后端
Derek_Smart2 小时前
从一次 OOM 事故说起:打造生产级的 JVM 健康检查组件
java·jvm·spring boot
NE_STOP3 小时前
MyBatis-mybatis入门与增删改查
java
孟陬6 小时前
国外技术周刊 #1:Paul Graham 重新分享最受欢迎的文章《创作者的品味》、本周被划线最多 YouTube《如何在 19 分钟内学会 AI》、为何我不
java·前端·后端
想用offer打牌7 小时前
一站式了解四种限流算法
java·后端·go
华仔啊7 小时前
Java 开发千万别给布尔变量加 is 前缀!很容易背锅
java
也些宝8 小时前
Java单例模式:饿汉、懒汉、DCL三种实现及最佳实践
java
Nyarlathotep01138 小时前
SpringBoot Starter的用法以及原理
java·spring boot