Что такое шаблон построителя?

Builder — это творческий шаблон проектирования, который отделяет построение сложного объекта от его представления, так что один и тот же процесс построения может создавать разные представления.

Шаблон Builder создан для преодоления некоторых недостатков Factory Pattern и Abstract Factory Pattern, когда объект имеет много атрибутов.

Есть три основные проблемы с фабричным шаблоном и абстрактным фабричным шаблоном, когда объекты имеют много свойств:

· Слишком много аргументов для передачи из клиентской программы в класс Factory, что может быть подвержено ошибкам, потому что в большинстве случаев тип аргументов один и тот же, и со стороны клиента сложно поддерживать порядок аргументов.

· Некоторые параметры могут быть необязательными, но в шаблоне Factory мы вынуждены отправлять все параметры, а необязательные параметры необходимо отправлять как NULL.

· Если объект тяжелый и его создание сложное, то вся эта сложность будет частью классов Factory, что сбивает с толку.

Каковы преимущества шаблона Builder?

· Поддержка, устранение необходимости писать несколько конструкторов.

· Код легче читать и поддерживать, когда для создания объекта требуется количество свойств из 4 или 5 свойств.

· Уменьшить количество конструкторов, не нужно передавать нулевые значения для неиспользуемых параметров.

· Объект построен более безопасно: потому что он был создан полностью перед использованием.

· Может создавать неизменяемые объекты

Каковы недостатки шаблона Builder?

· У Builder Pattern довольно много недостатков дублирующего кода: необходимо скопировать все свойства из класса Product в класс Builder.

· Увеличение сложности кода

Какие основные компоненты в нем есть?

Продукт. Создаваемый объект имеет множество свойств.

Builder: абстрактный класс или интерфейс.

ConcreteBuilder: наследует Builder и устанавливает детали того, как создать объект. Он идентифицирует и удерживает созданный им экземпляр, а также предоставляет способ возврата ранее созданных экземпляров.

Drector:где будет вызываться Builder для создания объекта.

У нас есть следующий пример:

Продукт

Пользователь

Конструктор

Бетоносмеситель

UserBuilder

Дизайнер

У нас есть вывод кода выше:

Спасибо, что уделили мне время :D

До свидания и увидимся дальше.