千家信息网

SpringBoot结合策略模式实战套路是什么

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,本篇文章为大家展示了SpringBoot结合策略模式实战套路是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.1. 前言我们都知道设计模式好,可以让我们
千家信息网最后更新 2026年11月04日SpringBoot结合策略模式实战套路是什么

本篇文章为大家展示了SpringBoot结合策略模式实战套路是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

1.1. 前言

我们都知道设计模式好,可以让我们的代码更具可读性,扩展性,易于维护,但大部分程序猿一开始都学过至少一遍设计模式吧,实战中不知用到了几成。接下来让我介绍一个结合SpringBoot的策略模式套路,让你的代码少些if-else

1.2. 开撸

废话不多说,直接告诉你今天的核心是@autowired,看到这个是不是很熟悉,你每天都在用,不就是自动注入Spring管理的Bean吗?但我们对它的用法很多时候就局限在全局变量的注入了,忘记了,它其实还可以构造器注入,类型注入或命名注入,那么结合策略模式会绽放怎样的火花呢?跟着我的代码来看

1.2.1. 计算策略接口

/** * @author laoliangliang * @date 2019/10/28 10:10 */public interface CalculateStrategy { int doOperation(int num1,int num2);}

1.2.2. 实现类

分别实现加减乘三个运算,可以看到我用了spring的注解@Component,也就是实例由spring管理了

@Componentpublic class AddOperation implements CalculateStrategy { @Override public int doOperation(int num1, int num2) { return num1 + num2; }}

@Componentpublic class SubstractOperation implements CalculateStrategy { @Override public int doOperation(int num1, int num2) { return num1 - num2; }}

@Componentpublic class MultiplyOperation implements CalculateStrategy { @Override public int doOperation(int num1, int num2) { return num1 * num2; }}

1.2.3. 上下文

之后创建上下文管理,用于提取策略。这个上下文才是本文的重点,注意到@autowired注解放的位置和对应的参数列表了吗?实际上它还可以注入到Map和List,Map的key就是它注入时的名,List则是存放全部实例对象

import com.google.common.base.Preconditions;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import org.springframework.util.StringUtils;import java.util.List;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;/** * @author laoliangliang * @date 2019/10/28 10:14 */@Componentpublic class CalculatelOperationContext {// @Autowired// private Map strategyMap; private final Map strategyMap = new ConcurrentHashMap<>(); @Autowired public void stragegyInteface(Map strategyMap) { this.strategyMap.clear(); strategyMap.forEach(this.strategyMap::put); System.out.println(this.strategyMap); } @Autowired public void stragegyInteface2(List strategyMap) { strategyMap.forEach(System.out::println); } public CalculateStrategy strategySelect(String mode) { Preconditions.checkArgument(!StringUtils.isEmpty(mode), "不允许输入空字符串"); return this.strategyMap.get(mode); }}

打印结果:

{multiplyOperation=com.laoliang.springboot.pattern.strategy.MultiplyOperation@372ea2bc, addOperation=com.laoliang.springboot.pattern.strategy.AddOperation@4cc76301, substractOperation=com.laoliang.springboot.pattern.strategy.SubstractOperation@2f08c4b}com.laoliang.springboot.pattern.strategy.AddOperation@4cc76301com.laoliang.springboot.pattern.strategy.MultiplyOperation@372ea2bccom.laoliang.springboot.pattern.strategy.SubstractOperation@2f08c4b

可以看到Map中key,value的关系,key的默认值为类的第一个字母小写

1.2.4. 控制层

/** * @author laoliangliang * @date 2019/10/28 10:52 */@RestControllerpublic class StrategyController { @Autowired private CalculatelOperationContext calculatelOperationContext; @RequestMapping(value = "/operation") public String strategySelect(@RequestParam("mode") String mode) { return String.valueOf(calculatelOperationContext.strategySelect(mode).doOperation(20, 5)); }}

启动SpringBoot,浏览器调用http://localhost:8080/operation?mode=multiplyOperation,结果100。模式可以选择另外两个addOperation和substractOperation

我这里就做个演示,输入参数就写固定了,可以看到我们通过上下文calculatelOperationContext调用其方法strategySelect,通过不同的调用参数获得不同的策略,所以业务中只要可以抽象的方法都可以改写成这样的模式。

这种模式套路的好处就是当你要新增一种策略,比如除法,你不需要修改原来的代码,只要抽象不变,你新增一个DivideOperation类实现CalculateStrategy策略接口加上Spring注解即可,调用时模式修改为pideOperation就可以实现调用了,耦合性大大降低,不需要再改原来那一坨自己都看不下去的代码了

可以看到全文中代码量还是相对比较少的,将不同的策略用不同的类实现,且可以不用改动别的代码,这篇文章你get到新套路了吗

上述内容就是SpringBoot结合策略模式实战套路是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

模式 策略 代码 套路 不同 上下 就是 实战 上下文 参数 注解 管理 内容 实例 技能 接口 方法 知识 篇文章 结果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 博彦科技互联网金融 上海卓越科技互联网 国智互联网科技 互联网和科技创新 互联网金融科技创新 科技创新互联网企业 互联网金融 科技创新 互联网科技网站 新华互联网科技2019 恒银科技与互联网金融 重庆互联网医院沙龙医盟信息科技 互联网科技研发水平 互联网方面的科技前沿 信承诺互联网科技有限公司 济南小医互联网科技有限公司招聘 易租星互联网科技有限公司 长沙易易互联网科技有限公司 河南商务圈互联网科技有限公司 安徽九吞吴互联网科技有限公司 科技美学互联网 艺术 小米移动互联网科技园 上海喔噻互联网科技有限公司 互联网中国科技 上海挚品互联网科技 互联网科技公司做什么 南山科技园互联网公司有哪些 山东星卡互联网科技有限公司官网 济南小医互联网科技有限公司招聘 平安好医生打造互联网科技医疗 知域互联网科技有限公司官网
0