简介: 在繁琐的业务流程处理中,通常采用面向过程的设计方法将流程拆分成N个步骤,每个步骤执行独立的逻辑。但是这样剥离仍然不彻底,修改其中一个步骤仍然可能影响其他步骤。在这种场景下,有一种经典的设计模式-责任链模式,可以将这些子步骤封装成独立的handler,然后通过pipeline将其串联起来。
作者 | 余敦刚(玄苏) 来源 | 阿里开发者公众号
【资料图】
在繁琐的业务流程处理中,通常采用面向过程的设计方法将流程拆分成N个步骤,每个步骤执行独立的逻辑。
public void process(params){ doFirst(params); doSecond(params); .... doLast(params);}
但是这样剥离仍然是不彻底的,修改其中一个步骤仍然可能影响其他步骤(同一个类修改,不符合开闭原则)。在这种场景下,有一种经典的设计模式-责任链模式,可以将这些子步骤封装成独立的handler,然后通过pipeline将其串联起来。
常见的责任链模式会设计如下:
总体来看,纯手动编写有以下问题:
正确性:实现复杂度较高,短时间手工编写容易出错 开发效率:涉及多个类的实现,需要花费不少时间进行测试非业务的pipeline流程,ROI不高 复用性:不同业务流程难以复用同一套pipeline的关键代码那有没有一套靠谱的框架能够解决上述问题呢?有的,它就是foldright/auto-pipeline,是责任链领域的"lombok"!
下面以读取系统配置为例,读取逻辑如下:
从本地配置文件读取,读取成功则直接返回,否则执行下一步 从系统变量读取,返回对应的值为了实现这个需求,读取配置接口定义如下:
public interface ConfigSource { String get(String key);}
如果使用auto-pipeline,该如何
以下大部分内容引至auto-pipeline官网:
引入Maven依赖
在需要生成pipeline的接口上加上@AutoPipeline
点击链接查看原文,关注公众号【阿里开发者】获取更多福利!https://mp.weixin.qq.com/s/wR0NByDFWs5RDgWS2Jn6yA
版权声明: 本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。