Паттерн проектирования "Строитель" (Builder) — это порождающий паттерн, который позволяет создавать сложные объекты пошагово. Он отделяет процесс конструирования сложного объекта от его представления, так что один и тот же процесс строительства может создавать различные представления.
Основные компоненты:
- Строитель (Builder): Интерфейс или абстрактный класс, определяющий методы для создания частей сложного объекта.
- Конкретный Строитель (Concrete Builder): Реализует интерфейс Строителя и предоставляет конкретную реализацию для построения частей объекта. Хранит промежуточный результат и предоставляет метод для получения готового объекта.
- Директор (Director): Необязательный компонент. Определяет порядок вызова методов строителя для создания объекта. Не знает о конкретных строителях.
- Продукт (Product): Сложный объект, который создается строителем.
Применение:
- Когда процесс создания объекта является сложным и включает множество необязательных шагов.
- Когда необходимо создавать различные представления одного и того же объекта, используя один и тот же процесс строительства.
- Когда конструктор объекта имеет большое количество параметров.
Пример на Go:
go
Преимущества:
- Изолирует код построения объекта от его клиентского кода.
- Позволяет изменять внутреннее представление продукта без изменения клиентского кода.
- Позволяет пошагово строить объект.
- Упрощает создание объектов с большим количеством параметров.
Недостатки:
- Увеличивает количество кода (классов/интерфейсов) для создания объекта.
- Может быть избыточным для простых объектов.