当前位置: 首页 > 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();}}

 

相关文章:

  • 【工具使用】STM32CubeMX-FreeRTOS操作系统-信号标志、互斥锁、信号量篇
  • 线程安全集合
  • 黑马Sting四道练习题
  • 数据库防丢失技术指南
  • 区块链技术概述
  • 链结构与工作量证明7️⃣:用 Go 实现比特币的核心机制
  • CQF预备知识:三、微分方程 -- 3.3.3 二阶常系数齐次线性微分方程详解
  • 人工智能--AI换脸
  • A Survey on the Memory Mechanism of Large Language Model based Agents
  • 【学习笔记】深度学习-参数初始化
  • Android View
  • 开疆智能Ethernet/IP转Modbus网关连接西门子BW500积算仪配置案例
  • Burp Suite 基础
  • 【CSS-5】掌握CSS文本样式:从基础到高级技巧
  • AOSP CachedAppOptimizer中的冻结和内存压缩功能
  • Java毕业设计:WML信息查询与后端信息发布系统开发
  • 【西门子杯工业嵌入式-4-什么是外部中断】
  • 软件测试用例篇——概念
  • JavaSec-SpringBoot框架
  • Python 接口:从协议到抽象基 类(定义并使用一个抽象基类)
  • 成都工商注册官方网/seo刷关键词排名优化
  • 无锡网站公司电话/官方百度app下载
  • 网页设计网站建设过程报告/长沙企业关键词优化哪家好
  • 怎么做同学录的网站/seo工资服务
  • 苏州网站建设科技有限公司/360优化大师app
  • 招工网站服务/seo人员是什么意思