当前位置: 首页 > article >正文

策略模式实战:Spring中动态选择商品处理策略的实现

概念

可以在运行时期动态的选择需要的具体策略类,处理具体的问题

组成元素

策略接口

public interface GoodsStrategy {void handleGoods();
}

具体策略类

@Service(Constants.BEAN_GOODS)
public class BeanGoodsStrategy implements GoodsStrategy {@Overridepublic void handleGoods() {System.out.println("处理金豆啦~~~~~");}
}
@Service(Constants.MEMBER_GOODS)
public class MemberGoodsStrategy implements GoodsStrategy {@Overridepublic void handleGoods() {System.out.println("会员商品");}
}
@Service(Constants.MEMBER_PLUS_GOODS)
public class MemberPlusGoodsStrategy implements GoodsStrategy {@Overridepublic void handleGoods() {System.out.println("会员积分商品");}
}

 上下文工厂类

@Service
public class GoodsStrategyFactory {@Autowiredprivate Map<String, GoodsStrategy> goodsStrategyMap;public GoodsStrategy getGoodsStrategy(String goodsType) {return goodsStrategyMap.get(goodsType);}
}

解释

在Spring框架中,通过 @Autowired 注入的 Map<String, GoodsStrategy> 会自动将 GoodsStrategy 接口的所有实现类注入到Map中,其中:

  • Key:Bean的名称(默认是类名首字母小写,或通过 @Component("自定义名称") 指定)。
  • Value:GoodsStrategy 接口的具体实现类的实例。

获取策略类处理业务

	@Testvoid test() {GoodsStrategy goodsStrategy = goodsStrategyFactory.getGoodsStrategy(Constants.MEMBER_GOODS);if (goodsStrategy != null){goodsStrategy.handleGoods();}}

 

http://www.lryc.cn/news/2403994.html

相关文章:

  • 主流信创数据库对向量功能的支持对比
  • Matlab | matlab中的画图工具详解
  • HA: Wordy靶场
  • 6.7本日总结
  • 中国移动6周年!
  • Svelte 核心语法详解:Vue/React 开发者如何快速上手?
  • Fullstack 面试复习笔记:HTML / CSS 基础梳理
  • 408第一季 - 数据结构 - 树与二叉树II
  • 打卡第47天
  • 从上下文学习和微调看语言模型的泛化:一项对照研究
  • 智慧城市建设方案
  • phosphobot开源程序是控制您的 SO-100 和 SO-101 机器人并训练 VLA AI 机器人开源模型
  • pygame开发的坦克大战
  • C++2025.6.7 C++五级考题
  • 【原神 × 二叉树】角色天赋树、任务分支和圣遗物强化路径的算法秘密!
  • 功能安全实战系列09-英飞凌TC3xx LBIST开发详解
  • 一个完整的日志收集方案:Elasticsearch + Logstash + Kibana+Filebeat (二)
  • RT-Thread内核组成——内核移植
  • Docker_Desktop开启k8s
  • MS2691 全频段、多模导航、射频低噪声放大器芯片,应用于导航仪 双频测量仪
  • 基于Java(SpringBoot、Mybatis、SpringMvc)+MySQL实现(Web)小二结账系统
  • Java泛型中的通配符详解
  • Java方法引用深度解析:从匿名内部类到函数式编程的演进
  • 三维GIS开发cesium智慧地铁教程(4)城市白模加载与样式控制
  • 越狱蒸馏-可再生安全基准测试
  • 64、js 中require和import有何区别?
  • 手机号段数据库与网络安全应用
  • Kafka 入门指南与一键部署
  • MATLAB实战:视觉伺服控制实现方案
  • Oracle正则表达式学习