前言
对于复杂的处理流程,采用流水线的方式进行处理来降低复杂度,一条流水线中可以有多个工序,每一个工序都只聚焦一个点,处理一件事。同时在一条流水线中可以灵活的添加新的工序或者去掉旧的工序。本文记录在项目开发中使用到的"流水线"结构。
前置条件
- 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
}
后记
记录一点工作中那些让我感觉经典的写法~~~