责任链(CoR)模式能否适配构建类DAG的多依赖流水线?
基于责任链模式实现类DAG的非线性流水线(Kotlin)
我理解责任链(CoR)模式适用于执行一系列线性任务,每个任务接收前序输出作为输入并生成新输出。现在希望将该模式扩展,用于构建带有并发执行路径的类DAG流水线,已定义如下Kotlin接口:
interface Handler<I, O> { fun handle(input: I): Result<*> }
需要实现类似以下流程的DAG结构:
Peel mangos (Mango -> PeeledMango) | Dice mangos (PeeledMango -> DicedMango) | | | Peel bananas (Banana -> PeeledBanana) | | | Dice bananas (PeeledBanana -> DicedBanana) | / |/ | Blend (DicedMango, DicedBanana, Yogurt, Milk -> MangoBananaSmoothie)
补充说明
我需要的是支持一个Handler依赖多个Handler输出的DAG框架。制作纯芒果冰沙时,线性责任链可以轻松实现:
// Construct the chain in reverse val blender = Blender() val addYogurtHandler = AddYogurtHandler(next = blender) val addMilkHandler = AddMilkHandler(next = addYogurtHandler) val diceMangoHandler = DiceMangoHandler(next = addMilkHandler) val peelMangoHandler = PeelMangoHandler(next = diceMangoHandler) // Kick off the chain val smoothie = peelMangoHandler.handle(mango)
但目前找不到简便的方式扩展该模式以支持多依赖的场景。
内容的提问来源于stack exchange,提问作者scabbage
相关产品推荐
相关产品推荐

