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

}
相关推荐
BillKu8 分钟前
Java解析前端传来的Unix时间戳
java·前端·unix
幼稚诠释青春9 分钟前
面试实例题
java·开发语言
cui_hao_nan20 分钟前
多轮对话实现
java·语言模型
饼干ovo21 分钟前
shell编程
java·git·github
华科云商xiao徐32 分钟前
Java使用Jsoup库实现通用爬虫
java·爬虫
闲敲棋子落灯华1 小时前
java学习笔记(三)--java包的引入、访问控制、类的继承、super关键字、重载、重写、运算符、拆箱
java·后端
程序员岳焱1 小时前
Java 使用 Spring AI 的 10 个实用技巧
java·后端·程序员
Bug改不动了1 小时前
迁移达梦数据库过程中,如何快速识别需要改写的Mapper SQL方法
java·mybatis
小小神仙1 小时前
JSCommon系列 - 为什么前端没有 Apache Commons?
前端·javascript·设计模式