# 《大营销平台系统设计实现》 - 营销服务 第7节:责任链模式处理抽奖规则

作者:小傅哥
博客:https://bugstack.cn (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!😄

  • 本章难度:★★★☆☆
  • 本章重点:通过责任链模式解耦抽奖规则中的前置规则,让代码流程实现更加清晰。因为黑名单、权重、默认抽奖,以及以后添加的各类抽奖方式。
  • 课程视频https://t.zsxq.com/162mRCX5q (opens new window)

版权说明:©本项目与星球签约合作,受《中华人民共和国著作权法实施条例》 (opens new window) 版权法保护,禁止任何理由和任何方式公开(public)源码、资料、视频等内容到Github、Gitee等,违反可追究进一步的法律行动。

# 一、本章诉求

在前面的章节中,我们运用了策略模式、工厂模式、模板模式,来完成抽奖流程的定义和抽奖过程前、中、后,规则的过滤处理。但在我们规则处理的流程中,因为前置规则的校验含带了抽奖的行为处理,这样绑定到规则流程实现中会显得有些臃肿,让规则负责的事情变得更多。所以在本节小傅哥会带着大家使用责任链模式进行优化完善,让整个代码流程变得更加清晰。

# 二、流程设计

设计前我们需要思考🤔 ,抽奖的前置规则在抽奖中是一个什么行为。其实它可以被抽象为一种策略行为,比如;黑名单抽奖策略、权重抽奖策略、白名单抽奖策略等。而这些策略规则是一种互斥行为,比如走了黑名单规则,就不应该在继续走权重规则了。那么对于这样的情况,责任链的设计就更加合适了。

  • 抽象原有的抽奖前规则,为责任链处理。
  • 责任链会顺序的将责任节点,通过责任链工厂,从库中读取的到的责任节点进行顺序填充到责任链上。
  • 注意;这样的工厂方式可以更好的根据不同的策略创建出所需的责任链。属于责任链 + 工厂的组合编写方式。