原文网址:Java设计模式系列--责任链模式(应用)_IT利刃出鞘的博客-CSDN博客
简介
说明
本文介绍Java设计模式中的责任链模式的一些使用场景。
责任链模式的好处
- 符合单一职责原则
- 每个功能都作为链路上的一个节点
- 符合开闭原则
- 有新的功能的时候再添加一个新的处理器即可,不需要动其他的处理器。
项目实例
在下边两个项目场景中,我用到了责任链模式。
1. 用户权限
用户经过Authentication和Authorization之后,还需要校验用户是否被禁用、是否允许多端登录等逻辑。
2. 发短信
发短信需要检查:是否在黑名单中,是否超过了每天最高的发短信次数,平台是否配置了短信功能等。
框架的应用
Spring Servlet的过滤器和拦截器。
JS的事件冒泡。
责任链与for循环的思考
责任链模式大概是这样的:
- 指定各个处理器的顺序
- 将所有处理器注册到一个集合中。
- 确定本处理器是否处理,是否调用下一个处理器
对于后端来说,可以将各个处理器注册到Spring容器,然后将其作为List注入,可以通过@Order来控制顺序。这样一来,其实可以通过for循环来完成跟责任链模式一样的作用,而且比责任链用起来更加简洁。
设计模式作为一种思路,其实本身应该脱离框架,适用于多种编程语言、多种框架。理解它,可以对很多类似的场景融会贯通。