Похожие презентации:
Паттерн проектирования "Строитель"
1.
ПАТТЕРНПРОЕКТИРОВАНИЯ
“СТРОИТЕЛЬ”
2.
ОПРЕДЕЛЕНИЕBuilder (Строитель) относится к классу порождающих
паттернов. Он используется для отделения процесса
конструирования сложного объекта от его представления,
так что в результате одного и того же конструирования
могут получаться различные объекты. Таким образом
можно получать разные представления объекта, используя
один и тот же шаблонный процесс. Сам Builder требует
создания дополнительного класса, с точно таким же
названием и добавлением к нему слова Builder.
3.
+ Паттерн предоставляет один из лучших способовсоздания сложных объектов.
+ Полезен, если возможно наличие нескольких видов
объекта либо когда надо выполнить много шагов, которые
связаны с его созданием.
+ Позволяет отделить процесс создания сложного объекта
от его реализации. При этом, результатом одних и тех же
операций могут быть различные объекты.
+ Позволяет создавать разные виды объекта, избегая при
этом засорения конструктора (антипаттерн «Телескопический конструктор»).
4.
- Builder и созданный объект жестко связаны междусобой - если понадобится изменить что-то в Builder,
придется вносить изменения и в созданном объекте.
5.
Шаблон Строитель включает двух участниковпроцесса:
Строитель (Builder) – предоставляет методы для
сборки частей объекта, при необходимости
преобразовывает исходные данные в нужный вид,
создает и выдает объект;
Распорядитель (Director) – определяет стратегию
сборки: собирает данные и определяет порядок
вызовов методов Строителя.
6.
Реализация шаблона в общем виде:1) Определяем шаги конструирования сложного объекта, и на их
основе разрабатываем интерфейс Строителя IBuilder;
2) Если планируется несколько стратегий сборки, то создаем
интерфейс Распорядителя IDirector;
3) Разрабатываем класс Распорядителя MyDirector (реализующий
IDirector), работающий со Строителями через интерфейс IBuilder;
4) Создаем класс Строителя MyBuilder, реализующий интерфейс
IBuilder и метод получения результата;
5) В клиентском коде экземпляру MyDirector передаем интерфейс
IBuilder экземпляра MyBuilder;
6) Запускаем процесс сборки, вызвав метод Распорядителя;
7) Получаем созданный экземпляр MyProduct у используемой
реализации Строителя MyBuilder.