Шаблон проектирования «Строитель» (Builder) | OTUS
🔥 Начинаем BLACK FRIDAY!
Максимальная скидка -25% на всё. Успейте начать обучение по самой выгодной цене.
Выбрать курс

Курсы

Программирование
iOS Developer. Basic
-25%
Python Developer. Professional
-25%
Разработчик на Spring Framework
-25%
Golang Developer. Professional
-25%
Python Developer. Basic
-25%
iOS Developer. Professional
-25%
Highload Architect
-25%
JavaScript Developer. Basic
-25%
Kotlin Backend Developer
-25%
JavaScript Developer. Professional
-25%
Android Developer. Basic
-25%
Unity Game Developer. Basic
-25%
Разработчик C#
-25%
Программист С Web-разработчик на Python Алгоритмы и структуры данных Framework Laravel PostgreSQL Reverse-Engineering. Professional CI/CD Vue.js разработчик VOIP инженер Программист 1С Flutter Mobile Developer Супер - интенсив по Kubernetes Symfony Framework Advanced Fullstack JavaScript developer Супер-интенсив "Azure для разработчиков"
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK
-25%
DevOps практики и инструменты
-25%
Архитектор сетей
-25%
Инфраструктурная платформа на основе Kubernetes
-25%
Супер-интенсив «ELK»
-16%
Супер-интенсив «IaC Ansible»
-16%
Супер-интенсив "SQL для анализа данных"
-16%
Базы данных Сетевой инженер AWS для разработчиков Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов Внедрение и работа в DevSecOps Администратор Linux. Виртуализация и кластеризация Нереляционные базы данных Супер-практикум по использованию и настройке GIT IoT-разработчик Супер-интенсив «СУБД в высоконагруженных системах»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Шаблон проектирования «Строитель» (Builder)

Строитель представляет собой порождающий шаблон проектирования, с помощью которого можно создать составной объект. Этот паттерн предназначается для решения проблемы антипаттерна «Телескопический конструктор».

Давайте представим, что вы зашли в McDonalds, где заказали конкретный продукт, тот же, БигМак, который вам приготовят без вопросов. Это пример шаблона «Простая фабрика». Но что, если логика создания включает в себя больше шагов? К примеру, вы желаете индивидуальный сэндвич в Subway. У вас в наличии ряд вариантов изготовления: какой хлеб, какие соусы, какой сыр? И здесь пригодится шаблон проектирования «Строитель».

Говоря проще, этот шаблон позволяет создавать разные виды объекта, избегая при этом засорения конструктора. Паттерн полезен, если возможно наличие нескольких видов объекта либо когда надо выполнить много шагов, которые связаны с его созданием.

Сделаем небольшое отступление и упомянем антипаттерн «Телескопический конструктор», о котором уже говорили:

public function __construct($size, $cheese = true, $pepperoni = true, $tomato = false, $lettuce = true)
{
}

Как можно заметить, число параметров конструктора может резко увеличиться, в результате чего понимать расположение этих самых параметров станет весьма сложно. Вдобавок к этому, данный список параметров будет расти, если вы пожелаете добавить новые варианты. В результате мы и получим так называемый «Телескопический конструктор».

Теперь рассмотрим это на примере кода. Шаблон «Строитель» — хорошая альтернатива. Итак, поначалу у нас есть Burger, который мы желаем создать:

Screenshot_1-1801-761554.png

Потом мы берём «Строителя»:

Screenshot_2-1801-82d920.png

А вот и пример использования:

Screenshot_3-1801-c0b616.png

Когда применять шаблон «Строитель»?

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

Вот и всё, осталось привести пример использования этого паттерна на Java.

По материалам статьи «Design Patterns for Humans».

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
🎁 Максимальная скидка!
Черная пятница уже в OTUS! Скидка -25% на всё!