工人设计模式

时间:2011-02-09 13:31:03

标签: oop design-patterns worker

什么是“工人”设计模式?

3 个答案:

答案 0 :(得分:9)

工人设计模式

<强>问题:

  • 您有一个小对象,它是数据和大量操作 可以对该对象执行
  • 您希望将对象的方法列表保持为小
  • 操作可以以不同的方式完成,包括不同的方式 实现
  • 你的小物件只知道如何阅读和保存自己 数据抽象层
  • 您想批量处理许多小物件

<强>解决方案:

  • 您有一个工作者界面,用于定义访问者API 工人以及如何添加主题
  • 每个主题可以有多个工作人员
  • 你的工人进行转型,你的主题被转变
  • 您的拍摄对象保持轻盈

示例:

您的ImageBinary对象表示包含高度和宽度的图像二进制文件(元数据已解耦)。您可以对此对象执行各种操作,如调整大小,裁剪,缩放。

$image1 = new ImageBinary(array(‘id’ => 1));
$image2 = new ImageBinary(array(‘id’ => 2));
$image3 = new ImageBinary(array(‘id’ => 3));

$worker = new ImageWorker;$worker->add($image1);$worker->add($image2);$worker->add($image3);$worker->rotate(90);

相关模式

  • 管理器
  • 适配器

答案 1 :(得分:7)

可能是您在worker thread pattern之后,在那里您使用队列来安排您希望由工作线程“脱机”处理的任务。 有些解决方案将使用pool of worker threads而不是单线程来利用并行化来实现性能提升。

答案 2 :(得分:1)

MapReduce之类的东西浮现在脑海中。可以在工作节点上并行执行多个任务。

编辑:正如@larsmans所提到的,这被称为Master/Worker模式。