带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(1)

简介: 带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(1)

一个搞定责任链的注解

image.png作者:余敦刚(玄苏)

image.png出品:大淘宝技术


 

 

本文将介绍注解版的责任链模式框架-foldright/auto-pipeline,解决繁琐业务流程手动编写责任链的开发效率&复   用等问题。

 

背景

 


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

 

 

public void process(params){

2

 

doFirst(params);

3

 

doSecond(params);

4

 

....

5

 

doLast(params);

6

}

 

 

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

image.png

 


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

 image.png

 

 

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

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

 

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

 

Quirk Start

 

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

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

 


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

 

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

 

如果使用auto-pipeline,该如何

以下大部分内容引至auto-pipeline官网: https://github.com/foldright/auto-pipeline

 


  1. 引入Maven依赖
<dependency>
<groupId>com.foldright.auto-pipeline</groupId>
<artifactId>auto-pipeline-processor</artifactId>
<version>0.2.0</version>
<scope>provided</scope>
</dependency>


带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(2)https://developer.aliyun.com/article/1339676?groupCode=taobaotech

相关文章
|
2月前
|
机器学习/深度学习 人工智能 API
MaaS市场全球领导者!阿里云5项能力获评最高评级
18日,Omdia发布《2025年全球企业级MaaS市场分析》报告,阿里云获评全球领导者,在基础模型、精调、Agent开发等5大维度获最高评级,为中国第一。报告指出,MaaS已进入2.0阶段,需提供全栈AI能力。阿里云凭借PAI-灵骏、百炼平台及Qwen系列大模型,成为领先“能力交付者”。其新技术Aegaeon降低GPU用量82%,通义千问研究获NeurIPS 2025最佳论文奖,显著提升模型效率。目前,阿里通义大模型服务超100万客户,覆盖国际奥委会、宝马、LV等知名机构。2025上半年,《财富》中国500强中7成已用GenAI,阿里云渗透率达53%,居首。
245 9
|
10月前
|
SQL 弹性计算 关系型数据库
MCP我知道:手搓代码学原理到应用,附讲解视频
MCP火爆异常,目前大量资料介绍了基本概念,与LLM联动这块通常是讲如何集成在Claude、Cursor这些系统,隐藏了其底层细节原理。本文将从0编写client、Server代码、搭建QwQ-32B大模型、接入云数据库,讲解通过联动外围工具来解决LLM“知识茧房”问题。最后总结并展望了MCP未来的发展。
1200 14
MCP我知道:手搓代码学原理到应用,附讲解视频
|
存储 安全 关系型数据库
后端技术深度剖析:构建高效稳定的企业级应用
【10月更文挑战第5天】后端技术深度剖析:构建高效稳定的企业级应用
348 0
|
存储
计算机组成原理(7)----CPU内部单总线数据通路
计算机组成原理(7)----CPU内部单总线数据通路
1805 0
|
11月前
|
设计模式 XML 算法
策略模式(Strategy Pattern)深度解析教程
策略模式属于行为型设计模式,通过定义算法族并将其封装为独立的策略类,使得算法可以动态切换且与使用它的客户端解耦。该模式通过组合替代继承,符合开闭原则(对扩展开放,对修改关闭)。
|
JavaScript API
uniapp实现录音功能和播放功能
uniapp实现录音功能和播放功能
|
机器学习/深度学习 文字识别 自然语言处理
深度学习之文本框检测
基于深度学习的文本框检测(Text Box Detection)是一项重要的计算机视觉任务,旨在从图像中自动检测和定位文本区域。它在光学字符识别(OCR)、自动文档处理、交通标志识别等领域具有广泛的应用。
276 2
|
存储 前端开发 搜索推荐
ClkLog基于ClickHouse 的百万日活实测报告
自 ClkLog 上线以来,我们不断吸纳用户需求,提升产品的支持能力。今年下半年,我们遇到了日活跃用户数达到百万级别的客户。为了给 ClkLog 用户提供可靠的技术建议和解决方案,同时也为了节省成本,在Clickhouse官方支持下,我们在阿里云上对 ClickHouse 社区版、企业版进行了详细测试和成本分析。
|
算法 安全 程序员
揭秘分布式系统:日志复制如何保障数据一致性?
本文介绍了分布式系统中的日志复制技术,这是保证高可用性和数据一致性的重要手段。以Raft算法为例,文章阐述了Leader如何将客户端请求复制到Follower的日志中:Leader首先记录请求,然后通过RPC发送给Follower,等待ACK确认,必要时进行重试。当多数Follower确认后,Leader提交日志并通知Follower。文中还提到了网络分区和日志一致性等挑战,以及应对策略,如超时机制、领导选举、日志匹配和压缩。最后,强调了日志复制在面对故障时确保系统一致性和可用性的作用。
562 4
|
JavaScript API 开发工具
记一次后台管理脚手架选型过程
面对大屏支持不足的vue移动端项目,业务部门要求改进。原项目优化困难,决定重构。选型阶段,因业务类似后台管理,选择vue框架。在git和gitee上对比了两款脚手架,最终选定[ pure-admin-thin ](https://github.com/pure-admin/pure-admin-thin)因其频繁更新、先进框架和丰富文档。选型关键在于资料易得性、框架时效性和维护者信誉。欢迎评论区提供反馈和建议。
566 1