java实现策略模式

创建策略接口

java 复制代码
public interface Calculate {

    public int operation(int a, int b);

}

实现接口

加法策略

java 复制代码
@Component
public class AddCalculate implements Calculate {
    @Override
    public int operation(int a, int b) {
        return a + a;
    }
}

减法策略

java 复制代码
@Component
public class SubCalculate implements Calculate {
    @Override
    public int operation(int a, int b) {
        return a - a;
    }
}

策略实现类

在springboot中,对于添加了 @Autowired的map会自动将实现类注入到map中,key是beanid,value是注入的对象实例

java 复制代码
@Component
public class CalculateFactory {

    @Autowired
    private Map<String, Calculate> calculateMap;

    public int calculate(String calculate, int a, int b) throws Exception {
        return Optional.ofNullable(calculateMap.get(calculate))
                .orElseThrow(() -> new RuntimeException("异常")).operation(a, b);
    }

}

使用

java 复制代码
@RestController
@RequestMapping("/demo")
public class DemoController {

    @Autowired
    private CalculateFactory calculateFactory;

    @GetMapping("/calculate")
    public int calculate() throws Exception {
        return calculateFactory.calculate("addCalculate", 1, 1);
    }

}
相关推荐
Libby博仙4 分钟前
Spring Boot 条件化注解深度解析
java·spring boot·后端
我是小疯子6612 分钟前
深入解析C++右值引用与移动语义
java·开发语言·算法
better_liang15 分钟前
每日Java面试场景题知识点之-JUC锁的底层原理
java·并发编程·juc·锁机制·reentrantlock·readwritelock·底层原理
悟能不能悟19 分钟前
Elastic Stack 中两种主要查询语言 KQL (Kibana Query Language) 和 Lucene 的详细对比和解释。
java·开发语言
我是一只小青蛙88825 分钟前
Java连接MySQL数据库实战指南
java
夏末47233 分钟前
Java异常处理终极指南:从入门到企业级实战,让程序稳如老狗!
java·java ee
子非鱼92138 分钟前
SpringBoot快速上手
java·spring boot·后端
techzhi42 分钟前
Apifox CLI + GitLab CI:接口自动化测试实施记录
java·ci/cd·kubernetes·gitlab·yapi·运维开发·fastapi
我爱娃哈哈1 小时前
SpringBoot + XXL-JOB + Quartz:任务调度双引擎选型与高可用调度平台搭建
java·spring boot·后端
小宇的天下1 小时前
Synopsys Technology File and Routing Rules Reference Manual (1)
java·服务器·前端