java工作流模式、背包模式、适配器工厂模式整合架构,让服务任务编排更便捷

        工作流和背包模式虽然不在23种常用设计模式中,但是在对任务编排处理类的业务代码使用起来是非常有用的。

       下面给大家介绍下工作流模式:

        例如,我之前有个项目需要对模型进行转换,因为不同配置的模型需要使用的转换方法不同,且单个模型需要经历多次的执行转换脚本,那就可以把每个脚本抽离出来封装为工作流中的一个字节点,通过对节点编排适应不同的转换任务,代码流程清晰,转换流程通过配置文件进行配置。

        背包模式呢,其实并不算是一种标准的设计模式,逻辑上可以理解为借鉴现实中“背包”的特性:可以装载不同类型的物品,并方便地进行取出或使用。在软件开发中,配合工作流模式,可以非常方便为工作流节点的执行提供需要的参数,这个也是我在非23种常用设计模式外比较喜欢的一种模式,例如在执行某个任务需要大量的组装参数等模式的代码上,我比较喜欢封装到统一的一个类中处理,后续的任务就把这个类从上至下传递,所有需要的参数都从类中直接获取,不需要在业务代码用到的地方才再去处理参数,而是预处理好参数,需要就去取。相当于把后续处理的多数参数都揣到兜里,需要就掏出来。

  给大家一个简单的 工作流、背包、工厂、适配器模式的整合demo:

        适配器模式的核心目的是将一个接口转换为客户期望的另一个接口,从而兼容不同接口的实现。这在代码中也有所体现:

工厂模式职责:

• WorkflowNodeFactory 提供了一个中央注册表,用于将 type 和实际适配器类(Class)关联起来。

• 工厂方法 createNode 根据类型创建实例并注入配置。

• 工厂屏蔽了对象创建的细节,外部调用者不需要知道具体的适配器实现类。

适配器职责:PaymentServiceAdapter、MessageQueueAdapter 和 CustomLoggingAdapter 都实现了统一的接口 WorkflowAdapter,屏蔽了每个模块的差异。

• 比如,PaymentServiceAdapter 适配了支付模块的内部逻辑。

• MessageQueueAdapter 适配了消息队列的逻辑。

统一接口

• 这些适配器共同实现 WorkflowAdapter 接口,工作流引擎调用时无需关心具体的适配器实现,只需要依赖接口即可。

• 每个适配器从外部来看都实现了统一的 execute 方法,但内部适配了不同的逻辑和数据。

        

项目结构:

src/
├── adapters/
│   ├── WorkflowAdapter.java
│   ├── ConfigurableAdapter.java
│   ├── PaymentServiceAdapter.java
│   ├── MessageQueueAdapter.java
│   ├── CustomLoggingAdapter.java
├── core/
│   ├── WorkflowNodeFactory.java
│   ├── WorkflowConfigLoader.java
│   ├── ConfigurableWorkflow.java
│   ├── Backpack.java
├── main/
│   ├── WorkflowTest.java
resources/
├── workflow-config.yaml

</

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值