# 《大营销平台系统设计实现》 - 营销服务 第7节:责任链模式处理抽奖规则
作者:小傅哥
博客:https://bugstack.cn (opens new window)
沉淀、分享、成长,让自己和他人都能有所收获!😄
- 本章难度:★★★☆☆
- 本章重点:通过责任链模式解耦抽奖规则中的前置规则,让代码流程实现更加清晰。因为黑名单、权重、默认抽奖,以及以后添加的各类抽奖方式。
- 课程视频:https://t.zsxq.com/162mRCX5q (opens new window)
版权说明:©本项目与星球签约合作,受《中华人民共和国著作权法实施条例》 (opens new window) 版权法保护,禁止任何理由和任何方式公开(public)源码、资料、视频等内容到Github、Gitee等,违反可追究进一步的法律行动。
# 一、本章诉求
在前面的章节中,我们运用了策略模式、工厂模式、模板模式,来完成抽奖流程的定义和抽奖过程前、中、后,规则的过滤处理。但在我们规则处理的流程中,因为前置规则的校验含带了抽奖的行为处理,这样绑定到规则流程实现中会显得有些臃肿,让规则负责的事情变得更多。所以在本节小傅哥会带着大家使用责任链模式进行优化完善,让整个代码流程变得更加清晰。
# 二、流程设计
设计前我们需要思考🤔 ,抽奖的前置规则在抽奖中是一个什么行为。其实它可以被抽象为一种策略行为,比如;黑名单抽奖策略、权重抽奖策略、白名单抽奖策略等。而这些策略规则是一种互斥行为,比如走了黑名单规则,就不应该在继续走权重规则了。那么对于这样的情况,责任链的设计就更加合适了。
- 抽象原有的抽奖前规则,为责任链处理。
- 责任链会顺序的将责任节点,通过责任链工厂,从库中读取的到的责任节点进行顺序填充到责任链上。
- 注意;这样的工厂方式可以更好的根据不同的策略创建出所需的责任链。属于责任链 + 工厂的组合编写方式。