真实业务场景使用-模板模式+策略模式组合

文章讲述了如何使用模板模式处理一系列相同流程但细节不同的编码生成问题,以及利用策略模式管理不同的生成策略。通过抽象出共性部分并以模板方法实现,再结合策略模式的映射机制,使得代码更加整洁,便于管理和扩展。示例中展示了商品编码和序号编码的生成逻辑。

模板和策略设计模式一般是使用最频繁的设计模式,模板的场景主要是处理一系列相同的流程,将这些流程放到模板里,每个流程里的处理可能有一些不一样的地方,则可以抽象出一个方法,由每一个有实际意义的子类实现。

策略模式:由于总会有不同的实现类,而最终总会要调用实现里,所以用策略模式帮助我们如何调用到实现类里。

1.背景说明

以我自己亲身经历的场景说一下,我接手了之前写好的系统,但是有个问题,一个新建功能,在还没有保存前就先获取了编号,不入库不记录,导致会出现很多人进入相同页面也就分配相同的编号,有一个保存被占用后,其他都无法保存因为编号重复,查看整个系统后发现很多都是这种方式,所以需要优化一下。

思考了一下,业务逻辑是需要记录一个编号值的库表,然后类别不同,再有一个编码值就可以,也就是如下这种方式,设计了如下库表

code type
20220102 goods:商品编码
CD20230205 biss:业务编码
23 order:序号码值

每次生成编码则将对应的类型的code更新,这样库里永远是新的,处理共性业务就会出现,

1.获取库里当前类型的编码,

2.根据当前编码的值得到新的编码(前一个编码值+1或者其他规则),

3.得到新的编码值则更新到库里,

所有的生成编号逻辑都要经历这三步,那么就抽出来共性用模板方式,唯一不同的是生成新的编码规则,看表里有的是序号,有的是年月日,有的是前缀+年月日,所以生成编码的方法需要抽象化由各个子类实现。

流程出来了,现在看来已经有三个子

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值