是否有用于将工作准备与执行分开的设计模式?

时间:2010-12-04 19:03:15

标签: design-patterns

是否存在将工作准备与执行分开的设计模式?

一些例子:

  • 数据库通过创建查询计划并执行它来执行查询。
  • 对于我的应用程序,我实现了一种复制文件的分阶段方法,因此我可以显示进度条。我首先创建一个文件复制操作列表,然后循环遍历列表,根据每个操作的权重(文件大小)更新进度条。
  • 我还实现了一个分阶段的方法来获取数据,我准备一个批次列表然后执行它们。原因是降低了复杂性(不同的批次具有不同的参数)并防止内存过载(批处理获取的数据量最大)。

基本模式是有一个'Planner'对象将任务分解为可以单独执行的'Work Items'。

我只是好奇,我希望一个已知的设计模式可以帮助与其他开发人员沟通,也许会给我一些改进设计的想法。

2 个答案:

答案 0 :(得分:2)

你说

“基本模式是有一个'Planner'对象将任务分解为可以单独执行的'工作项'。”

这表示您可能想要Command Pattern之类的内容。一个简单的实现只涉及定义接口,使用单个方法“命令”,以及创建子类。我非常喜欢这种模式,因为它很容易实现,并且命令很容易单独测试。

您也可以查看Composite Pattern。如果适用,您可以创建CompositeCommand抽象类。这提供了一种执行组成任务的所有命令的简洁方法。此外,它真的很容易实现。

你的“Planner”对象会创建满足工作的复合命令(或者只是你不想使用复合的命令列表)......

答案 1 :(得分:1)

在分布式系统中,您经常会看到代理或调度程序将工作分配给工作人员或代理人;调度程序可以通过对工作负载的一些了解来实现,并且能够将其拆分,或者可以只管理从队列中分配任务到工作人员。

我还没有找到此模式的共享说明或名称 - 但请看一下这里的起点:Master-Worker pattern in distributed computing