设计模式——管道模式

个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈 

概念

我们把特定的业务,比如订单业务中的临时订单、订单提交以及订单支付等,抽象成一组Pipeline(管道);

拿生成临时订单业务来说,执行流程包括:1参数校验->2业务数据校验->3业务处理,这里的三段子流程是严格按照顺序执行的,我们用Valve(阀门)定义它们,每一个子流程即一个Valve;

在管道模式中,我们要处理的对象是一组业务数据,即概念中的Context(上下文),Context贯穿于整个执行流程。

意义

管道模式是多步流程业务很好的抽象,内部基于单链表实现顺序执行,具有强顺序性;

管道模式对于整体流程的拆分,使得业务的扩展性大大增强,当业务需求发生变化,只需要确定需要加入/删除的子流程位置即可,就像从单链表中增加/删除一个节点。

实现

模块结构

PipeLineContext 实现管道上下文的概念,内部记录一个所处阀门在管道中的索引;使用HashMap存储业务数据,用户流程进行时的数据传递。
public class PipeLineContext {private PipeLineContext() {}@Getterprivate int index;@Getterprivate Map context;public PipeLineContext(int size) {this.index = 0;this.context = new HashMap<>(size);}public void put(String key, Object value) {context.put(key, value);}public void get(String key) {context.get(key);}@JSONField(serialize = false)public int getAndIncrement() {this.index++;return index;}@Overridepublic String toString() {return "{\"index\":\"" + index +


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部