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