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

}
相关推荐
bbq粉刷匠1 小时前
从0开始学java--day6.5
java
Slow菜鸟3 小时前
SpringBoot集成Elasticsearch | Elasticsearch 8.x专属Java Client
java·spring boot·elasticsearch
Miraitowa_cheems3 小时前
LeetCode算法日记 - Day 82: 环形子数组的最大和
java·数据结构·算法·leetcode·决策树·线性回归·深度优先
豐儀麟阁贵4 小时前
4.5数组排序算法
java·开发语言·数据结构·算法·排序算法
Halo_tjn5 小时前
Java Map集合
java·开发语言·计算机
程序猿小蒜5 小时前
基于springboot的车辆管理系统设计与实现
java·数据库·spring boot·后端·spring·oracle
zl9798996 小时前
SpringBoot-Web开发之Web原生组件注入
java·spring boot·spring
小羊学伽瓦6 小时前
【Java数据结构】——常见力扣题综合
java·数据结构·leetcode·1024程序员节
I'm Jie6 小时前
(五)Gradle 依赖传递与冲突处理
java·spring boot·spring·kotlin·gradle·maven
我命由我123457 小时前
Spring Cloud - Spring Cloud 声明式接口调用(Fiegn 声明式接口调用概述、Fiegn 使用)
java·后端·spring·spring cloud·微服务·架构·java-ee