Java责任链模式

责任链模式是一种行为设计模式,它允许你创建一个对象链。每个对象依次检查传递给它的请求,并决定是否要处理它。责任链模式有一些优点和缺点。

优点:

  1. 松散耦合: 责任链模式使得发送者和接收者不直接相互依赖,从而降低了系统中对象之间的耦合度。每个处理器都独立处理请求,不需要知道整个链的结构。

  2. 灵活性: 责任链模式使得可以动态地调整和扩展处理链。你可以轻松地新增或删除处理器,而无需修改现有的代码。

  3. 单一职责原则: 责任链模式有助于遵循单一职责原则,每个具体处理器只负责处理自己关心的请求。

  4. 简化对象: 发送者无需知道请求的最终处理者,降低了发送者和处理者之间的复杂性。

缺点:

  1. 请求未必被处理: 如果责任链未正确配置,或者没有合适的处理器处理请求,请求可能无法被处理。这可能是设计不当或配置错误导致的。

  2. 性能影响: 如果责任链过长,请求可能需要遍历整个链才能被处理。这可能会影响性能,特别是在链条很长且处理器处理时间较长的情况下。

  3. 难以调试: 当一个请求通过责任链时,难以确定哪个具体处理器最终处理了请求。这可能导致调试和维护的困难。

  4. 不适用于处理多个独立请求: 如果一个处理器处理的请求不仅取决于当前请求,还取决于其他请求或系统状态,责任链模式可能不是最佳选择。

场景使用:

请假OA审批:这里简单的文字描述

1.首选常见一个handler抽象类

2.组长/项目经理/人事经理实现这个抽象类

3.通过在工厂模式中实现找到第一个实例对象和最后一个实例对象,在实例对象中添加下一个实例指向(这里对比链表理解)

我们通过工厂类找到事先设置好的实例对象(bean)顺序 这里一个个1请假顺序执行  组长>项目经理>人事经理

替换:我们可以通过数据库替换事先的工厂模式,通过mysql表的形式

表的结构:id  bean对象 指向的下个对象

找到第一个实例开始的对象,找到下个对象

通过springUtils工具类和获取数据库字段获取spring 容器bean对象

从第一个对象开始引用下个对象,一直引用

(注意这里:可以借用一个临时对象存放引用责任链的对象,防止覆盖,这里临时对象改变,则第一个开始的对象也会相应改变)

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值