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);
    }

}
相关推荐
寻星探路4 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
曹牧6 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
爬山算法7 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
kfyty7257 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai
猫头虎7 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
李少兄7 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea
忆~遂愿7 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
小韩学长yyds7 小时前
Java序列化避坑指南:明确这4种场景,再也不盲目实现Serializable
java·序列化
仟濹7 小时前
【Java基础】多态 | 打卡day2
java·开发语言