带你读《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

相关文章
|
9月前
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(4)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(4)
|
9月前
|
移动中间件 网络协议 容灾
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(10)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(10)
|
9月前
|
存储 Java API
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(4)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(4)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(4)
|
9月前
|
应用服务中间件 程序员 数据库
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(3)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(3)
|
9月前
|
JSON Java 测试技术
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(7)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(7)
|
9月前
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(7)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(7)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(7)
|
9月前
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(9)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(9)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(9)
|
9月前
|
IDE 前端开发 Java
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(6)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(6)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(6)
|
9月前
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(2)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(2)
|
9月前
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(8)
带你读《2022技术人的百宝黑皮书》——一个搞定责任链的注解(8)