Рабочий шаблон дизайна - PullRequest
6 голосов
/ 09 февраля 2011

Что такое «рабочий» шаблон проектирования?

Ответы [ 3 ]

9 голосов
/ 20 декабря 2011

Рабочий шаблон проектирования

Проблема:

  • У вас есть маленький объект, который представляет собой данные и большой набор операций, которыеможно выполнить с этим объектом
  • Вы хотите, чтобы список методов объекта был небольшим
  • Операции могут выполняться различными способами, включая различные реализации
  • Ваш маленький объект знает толькокак читать и сохранять себя из уровня абстракции данных
  • Требуется пакетная обработка ряда небольших объектов

Решение:

  • У вас есть рабочий интерфейс, который определяет API доступа для работника и способ добавления предметов
  • У вас может быть несколько работников на предмет
  • Ваш работник выполняет преобразование, ваш субъект преобразуется
  • Ваш объект имеет легкий вес

Пример:

Ваш объект ImageBinary представляет двоичное изображение, включая высоту и ширину (metadАта развязана).Вы выполняете различные операции над этим объектом, такие как изменение размера, обрезка, масштабирование.

$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);

Связанные шаблоны

  • Manager
  • Адаптер
7 голосов
/ 09 февраля 2011

Возможно, вы используете шаблон рабочего потока , где вы используете очередь для планирования задач, которые вы хотите обрабатывать "в автономном режиме" рабочим потоком.Некоторые решения будут использовать пул рабочих потоков вместо одного потока для достижения повышения производительности за счет использования паралелизации.

1 голос
/ 09 февраля 2011

Что-то вроде MapReduce приходит на ум.Если на рабочих узлах можно параллельно выполнять несколько задач.

Редактировать: как упоминалось @larsmans, это называется шаблоном Master / Worker .

...