Рабочий шаблон проектирования
Проблема:
- У вас есть маленький объект, который представляет собой данные и большой набор операций, которыеможно выполнить с этим объектом
- Вы хотите, чтобы список методов объекта был небольшим
- Операции могут выполняться различными способами, включая различные реализации
- Ваш маленький объект знает толькокак читать и сохранять себя из уровня абстракции данных
- Требуется пакетная обработка ряда небольших объектов
Решение:
- У вас есть рабочий интерфейс, который определяет 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);
Связанные шаблоны