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

}
相关推荐
zzh___zzh9 分钟前
Spring Boot资源路径与ClassPathResource详解
java
IT·陈寒18 分钟前
macOS 安装 Claude Code 全流程
人工智能·macos·策略模式
学渣超19 分钟前
微服务日志智能诊断系统(八) 全链路追踪——request_id驱动的跨服务诊断
java·后端·agent
ACGkaka_20 分钟前
Spring Boot 实战(四十一):集成 BPMN(Flowable+bpmn-js)
java·spring boot·后端
学渣超31 分钟前
微服务日志智能诊断系统(九) 让 LLM 成为日志分析专家
java·后端·agent
学渣超37 分钟前
微服务日志智能诊断系统(七) 日志 RAG 引擎——蒸馏、索引与精准检索
java·后端·agent
掉鱼的猫39 分钟前
代码审查 Agent Harness 实战:AI 自动 Code Review
java·llm·agent
学渣超40 分钟前
微服务日志智能诊断系统(六) Fast Path vs Slow Path——双路径日志诊断策略
java·后端·agent
添砖java_85741 分钟前
网页聊天室测试报告
java·spring boot·spring·maven
hai3152475431 小时前
九章编译法:DEEPSEEK V3.2汇编编译实例
java·开发语言