Порождающие шаблоны проектирования



бет11/15
Дата01.10.2022
өлшемі254,47 Kb.
#41019
1   ...   7   8   9   10   11   12   13   14   15

Достоинства и недостатки


Достоинства:

  • Возможность контролировать процесс создания сложного продукта.

  • Возможность получения разных представлений некоторых данных.

Недостатки:

  • ConcreteBuilder и создаваемый им продукт жестко связаны между собой, поэтому при внесеннии изменений в класс продукта скорее всего придется соответствующим образом изменять и класс ConcreteBuilder.

Шаблон «Прототип»


Для создания новых объектов шаблон «Прототип» использует клонирование. Прототип - это уже существующий в системе объект, который поддерживает операцию клонирования, то есть умеет создавать копию самого себя. Таким образом, для создания объекта некоторого класса достаточно выполнить операцию clone() соответствующего прототипа.
Шаблон «Прототип» реализует подобное поведение следующим образом: все классы, объекты которых нужно создавать, должны быть подклассами одного общего абстрактного базового класса. Этот базовый класс должен объявлять интерфейс метода clone(). Также здесь могут объявляться виртуальными и другие общие методы, например, initialize() в случае, если после клонирования нужна инициализация вновь созданного объекта. Все производные классы должны реализовывать метод clone().
Данный шаблон можно использовать в следующих случаях:

  • Система должна оставаться независимой как от процесса создания новых объектов, так и от типов порождаемых объектов. Непосредственное использование выражения new в коде приложения считается нежелательным;

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

Шаблон «Фабричный метод» также делает систему независимой от типов порождаемых объектов, но для этого он вводит параллельную иерархию классов: для каждого типа создаваемого объекта должен присутствовать соответствующий класс-фабрика, что может быть нежелательно. «Прототип» лишен этого недостатка.


Диаграмма классов выглядит следующим образом:



Достарыңызбен бөлісу:
1   ...   7   8   9   10   11   12   13   14   15




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет