# 第06节:模板模式处理抽奖流程
作者:小傅哥
博客:https://bugstack.cn (opens new window)
沉淀、分享、成长,让自己和他人都能有所收获!
- 分支:210828_xfg_subtractionStock (opens new window)
- 描述:基于模板设计模式,规范化抽奖执行流程。包括:提取抽象类、编排模板流程、定义抽象方法、执行抽奖策略、扣减中奖库存、包装返回结果等,并基于P3C标准完善本次开发涉及到的代码规范化处理。
# 一、开发日志
下载安装 IDEA P3C 插件
Alibaba Java Coding Guidelines
,统一标准化编码方式。在本次分支涉及到的代码开发中,已调整代码中类、属性、方法对应的注释信息定义 Preferences | Editor | File and Code Templates -> File Header
/** * @description: * @author:小傅哥,微信:fustack * @date: ${DATE} * @Copyright: 公众号:bugstack虫洞栈 | 博客:https://bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获! */
1
2
3
4
5
6调整表
lottery.strategy_detail
添加awardSurplusCount
字段,用于记录扣减奖品库存使用数量。alter table strategy_detail add awardSurplusCount int default 0 null comment '奖品剩余库存';
1【重点】使用
模板方法设计模式
优化类DrawExecImpl
抽奖过程方法实现,主要以抽象类AbstractDrawBase
编排定义流程,定义抽象方法由类DrawExecImpl
做具体实现的方式进行处理。关于模板模式可以参考下:重学 Java 设计模式:实战模版模式「模拟爬虫各类电商商品,生成营销推广海报场景」 (opens new window)
# 二、模板模式应用
本章节最大的目标在于把抽奖流程标准化,需要考虑的一条思路线包括:
- 根据入参策略ID获取抽奖策略配置
- 校验和处理抽奖策略的数据初始化到内存
- 获取那些被排除掉的抽奖列表,这些奖品可能是已经奖品库存为空,或者因为风控策略不能给这个用户薅羊毛的奖品
- 执行抽奖算法
- 包装中奖结果
以上这些步骤就是需要在抽奖执行类的方法中需要处理的内容,如果是在一个类的一个方法中,顺序开发这些内容也是可以实现的。但这样的代码实现过程是不易于维护的,也不太方便在各个流程节点扩展其他功能,也会使一个类的代码越来越庞大,因此对于这种可以制定标准流程的功能逻辑,通常使用模板方法模式是非常合适的。接下来我们就来通过这样的设计模式来开发实现下代码逻辑。