责任链的三种实现方式比较

第一种方式:
实现handlerChain,handlerChain里面用一个列表保存所有的handler。
优点:直观。
缺点:只能顺序执行,前一个handler逻辑完全跑完了,再跑下一个逻辑。
例子如下:
这里写图片描述

第二种方式:
将handler链交给context保管,spring的责任链,web的listener链都是基于这种方式实现,类似于DFS。
优点:可以在前一个handler的任意地方调用下一个handler,逻辑调用更加灵活。
缺点:由于依旧通过数组来保管handler,责任链只能使用一次。
这里写图片描述
客户端通过context.proceed()来指明何时在一个handler里面调用下一个handler逻辑。如下图所示,实现了先调用后面handler逻辑,返回后再调用本身逻辑的功能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java 责任链模式是一种设计模式,主要用于处理请求。在这种模式中,多个对象形成一个并依次处理请求,直到有一个对象可以处理它为止。Java 责任链模式虽然简单,但却非常强大,可以应用于许多场景。 Java 责任链模式三种实现方式: 1、基于 OOP 实现 这种实现方式是最基本的责任链模式,代码中将每个处理者定义为一个独立的类,并且将它们按照顺序连接在一起。 这种实现方式的优点是简单易懂,代码可读性高,容易扩展。缺点是类的数量可能会很多,需要提前确定好责任的完整结构,不太灵活。 2、基于注解实现 基于注解实现 Java 责任链模式,需要使用 Java 的反射机制。通过定义注解类型,在接口方法上添加注解,再通过反射来寻找哪些方法应该被执行,找到后按顺序执行。如果某一个处理器不需要被执行,就可以跳过它。 这种实现方式的优点是利用注解功能可以不用创建很多类,代码可读性较好。缺点是需要使用反射来执行方法,会影响性能,不太容易排错。 3、基于 Spring AOP 实现 基于 Spring AOP 实现 Java 责任链模式,需要使用 Spring 框架的 AOP 功能。利用 AOP,可以在不修改业务代码的情况下,动态地将处理器按照顺序连接在一起,然后依次执行。 这种实现方式的优点是简单、灵活,可以动态修改责任的结构。缺点是有一定的学习门槛,需要掌握 Spring AOP 的相关知识。 总结起来,根据具体情况选择不同的实现方式,都可以实现 Java 责任链模式。除了以上三种实现方式,还可以使用 lambda 表达式来实现责任

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mzh0817

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值