设计模式篇 之 责任链模式

责任链模式是一种行为设计模式,它让多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。该模式可以动态指定一组对象处理请求,并通过改变链路结构来新增或删减责任。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义

        责任链模式(Chain of Responsibility Pattern)是将链中每一个节点看作是一个对象,每个节点处理的请求均不同,且内部自动维护一个下一节点对象。当一个请求从链式的首端发出时,会沿着链的路径依次传递给每一个节点对象,直至有对象处理这个请求为止。

        属于行为型模式。


适用场景

  1. 多个对象可以处理同一请求,但具体由哪个对象处理则在运行时动态决定
  2. 在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。
  3. 可动态指定一组对象处理请求。

哪些类是责任链模式

        servlet包下的Filter类,有个doFilter方法内有个FilterChain参数 ,Spring中的channelPipeline类型等。


总结

优点

  1. 将请求与处理解耦
  2. 请求处理者(节点对象)只需要关注自己感兴趣的请求进行处理即可,对于不感兴趣的请求,直接转发给下一级节点对象。
  3. 具体链式传递处理请求功能,请求发送这无需知晓链路结构,只需等待请求处理结果。
  4. 链路结构灵活,可以通过改变链路结构动态地新增或删减责任
  5. 易于扩展新的请求处理类(节点),符合开闭原则。

缺点

  1. 责任链太长或者处理时间过长,会影响整体性能。
  2. 如果节点对象存在循环引用时,会造成死循环,导致系统崩溃。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值