使用 module/mediator/facade 模式管理分层任务
Managing hierarchical tasks with module/mediator/facade pattern
假设我有一个非常密集的程序任务要完成,big task
,它可以分解成更小的明确定义的子任务:
big task
small task 1
tiny task 1
tiny task 2
...
small task 2
...
...
每个子任务从父任务中获取数据,运行相关计算,然后returns将结果传递给父任务,依此类推,直到big task
完成。
我仍在学习 module/mediator/facade 模式,但据我了解,该架构如下所示:
父任务会发布指令(子任务会听到),子任务会在完成时发布它们的结果(父任务会听到)。
我的理解对吗? Addy Osmani 的解释非常有帮助,但他并没有过多谈论用于复杂系列计算的模块。也许对于这类项目有更好的设计模式?谢谢。
你确定你真的需要在这里使用这么多设计模式吗?
如果您只有一系列嵌套的孤立任务,为什么不像 matryoshka doll 那样构造它们?
你可能有一个抽象任务class,它允许自己有children。也不能有children。这个 class 可能还有 calc() 函数,如果需要,它会启动 children 进行计算,将结果和 returns 一些值合并到 parent。您必须将一些逻辑抽象到 Task 中,但这样的方案可以让您降低复杂性。
然后您将拥有 Task 的特定后代来执行不同类型的计算。您可以将此类任务的配置存储在 JSON 或 XML 文件中。
使用各种图案看起来很漂亮很酷,但如果根本不需要使用它们...
我是不是漏掉了什么?
假设我有一个非常密集的程序任务要完成,big task
,它可以分解成更小的明确定义的子任务:
big task
small task 1
tiny task 1
tiny task 2
...
small task 2
...
...
每个子任务从父任务中获取数据,运行相关计算,然后returns将结果传递给父任务,依此类推,直到big task
完成。
我仍在学习 module/mediator/facade 模式,但据我了解,该架构如下所示:
父任务会发布指令(子任务会听到),子任务会在完成时发布它们的结果(父任务会听到)。
我的理解对吗? Addy Osmani 的解释非常有帮助,但他并没有过多谈论用于复杂系列计算的模块。也许对于这类项目有更好的设计模式?谢谢。
你确定你真的需要在这里使用这么多设计模式吗?
如果您只有一系列嵌套的孤立任务,为什么不像 matryoshka doll 那样构造它们?
你可能有一个抽象任务class,它允许自己有children。也不能有children。这个 class 可能还有 calc() 函数,如果需要,它会启动 children 进行计算,将结果和 returns 一些值合并到 parent。您必须将一些逻辑抽象到 Task 中,但这样的方案可以让您降低复杂性。
然后您将拥有 Task 的特定后代来执行不同类型的计算。您可以将此类任务的配置存储在 JSON 或 XML 文件中。
使用各种图案看起来很漂亮很酷,但如果根本不需要使用它们...
我是不是漏掉了什么?