(转)设计模式--责任链模式的思考

https://cloud.tencent.com/developer/article/1347589

标准的责任链

定义:客户端发出的请求,客户端本身并不知道被哪一个对象处理,而直接扔给对象链,该请求在对象链中共享,由对象本身决定是否处理.
当请求被处理后该链终止.本质目的是把客户端请求与接收者解耦,但是解耦的太彻底了,只能让接收者一个个来看看是不是自己该处理的请求

1.关键点:一个请求只被一个对象处理,一旦处理成功后则链终止,请求不再被继续传递
2.一个请求对应一个对象:一对一模式大多场景可以用策略模式来代替
3.只有在客户端并不清楚具体的执行者是哪个对象的时候,责任链才比较适合
4.链上的每个对象都要调用一次,产生了太多没必要的调用.标准的责任链实际上应用场景并不是很多,而常使用的是升级版的功能链

功能链

定义:功能链是责任链的演变,结构上并没有实质的变化,只是每一个节点都可以处理请求,处理完转向下一个,也就是每一个请求都经历全部的链.这种应用场景就比较多了,
比如我要办一件事,先去A再去B最后去C,这个例子还有点说明ABC三者的关系,取决于构造链时的顺序,另外每一步没处理好可以自由的选择退出链.

关键点:每个一节点对象都可以处理请求,也就是每一个请求都经历全部的链

常用的几个组件,也就是开发中常用的几个模块

1.业务处理链的对象接口
2.业务处理链的各个对象节点实现
3.chain链管理类,可以理解为调用触发的地方
4.链的配置类,初始化链的地方

常用的例子

Java中Filter链
Spring Security中拦截链
Mybatis中插件链

 

推荐阅读:https://blog.csdn.net/liuwenzhe2008/article/details/70199520

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值