记基于Scala和函数式编程思想的流水线框架

记基于Scala和函数式编程思想的流水线框架

前言

对于复杂的处理流程,采用流水线的方式进行处理来降低复杂度,一条流水线中可以有多个工序,每一个工序都只聚焦一个点,处理一件事。同时在一条流水线中可以灵活的添加新的工序或者去掉旧的工序。本文记录在项目开发中使用到的"流水线"结构。

前置条件

  • Scala 3
  • 对函数式编程有一定的了解

代码

// 流水线
object Pipeline{
	def gen(dealObject: Object): Object = {
		given TransformContext(dealObject) // 设置上下文

		dealObject
			|> ATransformer()
			|> BTransformer()
	}

	extension (dealObject: Object)
		private def |>(phase: ObjectTransformPhase)(using transformContext: TransformContext): Object =
			phase.apply(dealObject)
			// 也可以在这里编写一些输出逻辑,比如被工序处理后的结果输出
			// 设置参数,决定是否输出
}
// 工序
trait ObjectTransformer:
	def apply(dealObject: Object): Object

class ATransformer extends ObjectTransformer {
	override def apply(dealObject: Object): Object =
		// 对dealObject进行处理
		dealObject
}

后记

记录一点工作中那些让我感觉经典的写法~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值