JAVA笔记 | 策略模式+枚举Enum简单实现策略模式(可直接套用)

本篇为更为简单的策略模式应用,使用枚举来进行策略分配

上一篇(链接如下)更像是策略+工厂模式来分配策略

JAVA笔记 | 实际上用到的策略模式(可直接套用)-CSDN博客

先创建策略相关类

java 复制代码
//策略类
public interface PetStrategy {

    /**
     * 执行动作  - 跑RUN
     */
    String run(String name);
}

//猫实现类
@Service
public class CatStrategy implements PetStrategy{
    @Override
    public String run(String name) {
        return name + "猫跑了";
    }
}

//狗实现类
@Service
public class DogStrategy implements PetStrategy{
    @Override
    public String run(String name) {
        return name + "狗跑了";
    }
}

新建策略枚举

java 复制代码
@Getter
public enum PetTypeEnum {

    DOG("1", "DOG", new DogStrategy()),
    CAT("2", "CAT", new CatStrategy());

    private String code;
    private String type;
    private PetStrategy petStrategy;

    PetTypeEnum(String code, String type,PetStrategy strategy) {
        this.code = code;
        this.type = type;
        this.petStrategy = strategy;
    }

    //根据code获得枚举策略类型
   public static PetTypeEnum getPetTypeEnum(String code){
        PetTypeEnum type = Arrays.stream(PetTypeEnum.values())
                .filter(a -> a.code.equals(code))
                .findFirst()
                .orElse(null);
        if(null == type){
            throw new IllegalArgumentException("未找到type");
        }
        return type;
    }
}

controller调用测试

相关推荐
高兴达15 分钟前
Spring boot入门工程
java·spring boot·后端
萧曵 丶17 分钟前
Spring @TransactionalEventListener
java·数据库·spring·事务·transactional·异步
笑衬人心。17 分钟前
HTTPS详解:原理 + 加解密过程 + 面试问答
java·网络协议·http·面试·https
蓝澈112119 分钟前
弗洛伊德(Floyd)算法-各个顶点之间的最短路径问题
java·数据结构·动态规划
再见晴天*_*28 分钟前
logback 日志不打印
java·服务器·logback
幽络源小助理36 分钟前
SpringBoot基于JavaWeb的城乡居民基本医疗信息管理系统
java·spring boot·学习
欧阳有财39 分钟前
[java八股文][Mysql面试篇]日志
java·mysql·面试
TDengine (老段)1 小时前
使用 StatsD 向 TDengine 写入
java·大数据·数据库·时序数据库·iot·tdengine·涛思数据
真实的菜1 小时前
JVM类加载系统详解:深入理解Java类的生命周期
java·开发语言·jvm
N_NAN_N1 小时前
类图+案例+代码详解:软件设计模式----原型模式
java·设计模式·原型模式