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

[复制链接]
发表于 2025-6-9 06:15:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
概念

可以在运行时期动态的选择需要的具体策略类,处理具体的题目
构成元素

策略接口

  1. public interface GoodsStrategy {
  2.         void handleGoods();
  3. }
复制代码
具体策略类

  1. @Service(Constants.BEAN_GOODS)
  2. public class BeanGoodsStrategy implements GoodsStrategy {
  3.         @Override
  4.         public void handleGoods() {
  5.                 System.out.println("处理金豆啦~~~~~");
  6.         }
  7. }
复制代码
  1. @Service(Constants.MEMBER_GOODS)
  2. public class MemberGoodsStrategy implements GoodsStrategy {
  3.         @Override
  4.         public void handleGoods() {
  5.                 System.out.println("会员商品");
  6.         }
  7. }
复制代码
  1. @Service(Constants.MEMBER_PLUS_GOODS)
  2. public class MemberPlusGoodsStrategy implements GoodsStrategy {
  3.         @Override
  4.         public void handleGoods() {
  5.                 System.out.println("会员积分商品");
  6.         }
  7. }
复制代码
 上下文工厂类

  1. @Service
  2. public class GoodsStrategyFactory {
  3.     @Autowired
  4.     private Map<String, GoodsStrategy> goodsStrategyMap;
  5.     public GoodsStrategy getGoodsStrategy(String goodsType) {
  6.         return goodsStrategyMap.get(goodsType);
  7.     }
  8. }
复制代码
解释

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

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

  1.         @Test
  2.         void test() {
  3.                 GoodsStrategy goodsStrategy = goodsStrategyFactory.getGoodsStrategy(Constants.MEMBER_GOODS);
  4.                 if (goodsStrategy != null){
  5.                         goodsStrategy.handleGoods();
  6.                 }
  7.         }
复制代码
 



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表