用设计模式解决电商项目的更新库存业务

在这里插入图片描述

一. 问题背景

可以先了解关于电商库存的读取。加载完sku信息后,如果订单号还没有创建(即还没有创建订单)就会校验库存。更新订单时,不需要再判断库存。关于库存更新的业务用了命令设计模式+模板方法设计模式

二. 前言

技术栈:SpringBoot,Redis

设计模式:工厂模式,命令模式,模板方法。(关于设计模式,详情可参考gmall-learing项目的gmall-design-strategy模块的readme.md文件

三. 场景介绍

命令模式的场景也很常用,比如你要执行一些操作,这些操作都实现了一个接口,但是有不同的实现,这些命令的执行类是同一个,需要执行什么命令发送这个命令给到执行类就可以了,其实这样看,策略模式和命令模式是有点像的,但是他们其实是有本质去别的。

策略模式是为了解决if/else的问题。而 命令模式除了可以执行正向的命令外,还可以提供回退的命令来回退正向的命令。

项目中的库存更新目前就是使用了命令模式。

库存更新需要更新可用库存,更新锁定库存,更新已销售库存,还要记录日志等。不同的更新逻辑中,上述的实现都不一样,因此可以将每种更新都看做一种命令,只需要客户端发送一个命令过来,就可以指定实现类来进行实现。目前shoplus根据不同的扣减规则做了一些扣减的命令。

实际上电商erp系统中,可以做到更多的库存相关的操作,比如采购入库库存更新、退货入库库存更新、提交订单库存更新、支付订单库存更新、取消订单库存更新等等。

对于每一种命令,我们用对应的工厂方法创建出来。比如用更新可用库存工厂方法创建更新可用库存命令,用记录日志工厂方法创建记录日志命令。

四. 思路

思路如下:

在这里插入图片描述
在这里插入图片描述

五. 解决方案

详情见gmall-learning项目的gmall-design-command模块,主要了解该模块下的inventory文件夹里面的类即可。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值