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

策略模式实战: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.lqws.cn/news/199495.html

相关文章:

  • 《真假信号》速读笔记
  • 物联网协议之MQTT(二)服务端
  • 轮廓 填充空洞 删除孤立
  • 【Dv3Admin】系统视图字典管理API文件解析
  • 靶场(二十)---靶场体会小白心得 ---jacko
  • 探索C++标准模板库(STL):String接口的底层实现(下篇)
  • JavaScript ES6 解构:优雅提取数据的艺术
  • 【python与生活】如何构建一个解读IPO招股书的算法?
  • 虚幻基础:角色旋转
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(三十一) -> 同步云端代码至DevEco Studio工程
  • VBA之Word应用第三章第十节:文档Document对象的方法(三)
  • 华为云Astro中服务编排、自定义模型,页面表格之间有什么关系?如何连接起来?如何操作?
  • 巴西医疗巨头尤迈Kafka数据泄露事件的全过程分析与AI安防策略分析
  • 食品计算—Food Portion Estimation via 3D Object Scaling
  • Pnpm的使用
  • 零基础在实践中学习网络安全-皮卡丘靶场(第十五期-URL重定向模块)
  • LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
  • Python爬虫实战:研究Unirest库相关技术
  • VNA校准基础知识
  • Mac版Visual Studio Code Copilot 无法使用的解决方法
  • Linux(生产消费者模型/线程池)
  • 数据库管理-第334期 Oracle Database 23ai测试版RAC部署文档(20250607)
  • MVC分层架构模式深入剖析
  • AI驱动的B端页面革命:智能布局、数据洞察的底层技术解析
  • JAVA国际版二手交易系统手机回收好物回收发布闲置商品系统源码支持APP+H5
  • C++--list的使用及其模拟实现
  • [C++] list双向链表使用方法
  • 嵌入式学习笔记 - freeRTOS vTaskPlaceOnEventList()函数解析
  • wpf的converter
  • 【Java微服务组件】分布式协调P4-一文打通Redisson:从API实战到分布式锁核心源码剖析