Шаблоны проектирования. Prototype.

Продолжая тему шаблонов генерации объектов, рассмотрим шаблон Prototype.  Я уже описал поставленную задачу в прошлой статье, и мы продолжим развивать эту мысль. Если вы не читали предыдущую статью, то можете посмотреть ее здесь.

Как я уже писал, Abstract Factory не обладает достаточной гибкостью в активно развивающейся системе, и может принести много неудобств в поддержке структуры классов. Здесь на сцену выходит Prototype. Он более гибок и прост в расширении. Ключевым понятием здесь является оператор clone. Если вы мало знакомы с ним и с особенностями его использования, то советую обратится к мануалу.

Итак, в дополнение предыдущей задачи мы получили указание: “документооборот должен быть неоднородным”. Что имеется ввиду? Например, в прошлой статье, если бы мы захотели выбрать формат обмена PDF, то он был бы жестко зафиксирован в нашей системе и обмен бухгалтерскими отчетами и организационными указаниями шел бы только в этом формате. Нам же необходимо учесть желания нашего руководства отправлять бухгалтерский отчет в формате XML, а организационные указания в формате PDF. Применяя шаблон Abstarct Factory, нам бы потребовалось создать новый класс-управленец, который был бы комбинировал работу с XML и PDF. А что если нам скажут добавить еще пару форматов и типов документов? Получится не очень удобно и код разрастется до неимоверных масштабов.

Этот вариант, очевидно, не подходит. Перейдем к идее Prototype. Здесь не будет множественной реализации класса-управленца, так как основной девиз этого шаблона – “переход от наследования к композиции”. Посмотрим как это можно реализовать:

 

Таким образом мы избавились от лишнего наследования и получили большую гибкость. Очевидно, что мы можем делегировать любые подклассы видов документов:

 

Очевидно, что мы добились большей гибкости и можем с минимальными изменениями структуры класса-управленца добавлять новые типы документов и форматов.

Из всего выше сказанного можно сделать вывод: “Если вам нужна гибкая генерация объектов – Prototype отличный выбор…”

1 комментарий Шаблоны проектирования. Prototype.

  1. Пингбэк: Шаблоны проектирования. Abstract Factory. | I-paper.ru

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">