全球速讯:一个注解搞定责任链,学还是不学?

简介: 在繁琐的业务流程处理中,通常采用面向过程的设计方法将流程拆分成N个步骤,每个步骤执行独立的逻辑。但是这样剥离仍然不彻底,修改其中一个步骤仍然可能影响其他步骤。在这种场景下,有一种经典的设计模式-责任链模式,可以将这些子步骤封装成独立的handler,然后通过pipeline将其串联起来。

作者 | 余敦刚(玄苏) 来源 | 阿里开发者公众号


【资料图】

背景

在繁琐的业务流程处理中,通常采用面向过程的设计方法将流程拆分成N个步骤,每个步骤执行独立的逻辑。

public void process(params){    doFirst(params);    doSecond(params);    ....    doLast(params);}

但是这样剥离仍然是不彻底的,修改其中一个步骤仍然可能影响其他步骤(同一个类修改,不符合开闭原则)。在这种场景下,有一种经典的设计模式-责任链模式,可以将这些子步骤封装成独立的handler,然后通过pipeline将其串联起来。

常见的责任链模式会设计如下:

总体来看,纯手动编写有以下问题:

正确性:实现复杂度较高,短时间手工编写容易出错 开发效率:涉及多个类的实现,需要花费不少时间进行测试非业务的pipeline流程,ROI不高 复用性:不同业务流程难以复用同一套pipeline的关键代码

那有没有一套靠谱的框架能够解决上述问题呢?有的,它就是foldright/auto-pipeline,是责任链领域的"lombok"!

Quirk Start

下面以读取系统配置为例,读取逻辑如下:

从本地配置文件读取,读取成功则直接返回,否则执行下一步 从系统变量读取,返回对应的值

为了实现这个需求,读取配置接口定义如下:

public interface ConfigSource {    String get(String key);}

如果使用auto-pipeline,该如何

以下大部分内容引至auto-pipeline官网:

引入Maven依赖

在需要生成pipeline的接口上加上@AutoPipeline

点击链接查看原文,关注公众号【阿里开发者】获取更多福利!https://mp.weixin.qq.com/s/wR0NByDFWs5RDgWS2Jn6yA

版权声明: 本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

关键词: 设计模式 面向过程的 设计方法

推荐DIY文章
主机存在磨损或划痕风险 PICO4便携包宣布召回
穿越湖海!特斯拉Cybertruck电动皮卡可以当“船”用
vivoXFold+折叠旗舰开售 配备蔡司全焦段旗舰四摄
飞凡R7正式上市 全系标配换电架构
中兴Axon30S开售 拥有黑色蓝色两款配色
荣耀MagicBookV14 2022正式开售 搭载TOF传感器
it