Skip to content

qpimsslg/software_development

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

Строитель

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

Покажем работу данного паттерна на автомобиле!

Пример конструирования автомобилей с инструкцией к ним:

image (это я рисовала!)

Автомобиль — это сложный объект, который может быть создан разными способами. Вместо того, чтобы настраивать автомобиль через конструктор, мы вынесем его сборку в отдельный класс-строитель, предусмотрев методы для конфигурации всех частей автомобиля

Клиент может собирать автомобили, работая со строителем напрямую. Но, с другой стороны, он может поручить это дело директору. Ведь директор знает какие шаги строителя нужно вызвать, чтобы все прошло нужным образом!

А еще к каждому автомобилю нужно руководство, совпадающее с его конфигурацией. Поэтому создадим ещё один класс строителя, который будет печатать страницы руководства к той детали, которую мы встраиваем в продукт. Теперь, пропустив оба типа строителей через одни и те же шаги, мы получим автомобиль и подходящее к нему руководство пользователя.

Бумажное руководство и железный автомобиль — это две разных вещи, не имеющих ничего общего. По этой причине мы должны получать результат напрямую от строителей, а не от директора. Иначе нам пришлось бы жёстко привязать директора к конкретным классам автомобилей и руководств.

Структура:

  1. Интерфейс строителя объявляет шаги конструирования продуктов, общие для всех видов строителей.
  2. Конкретные строители реализуют строительные шаги, каждый по-своему. Конкретные строители могут производить разнородные объекты, не имеющие общего интерфейса, в нашем случае создание машины и инструкции
  3. Продукт — создаваемый объект. Продукты, сделанные разными строителями, не обязаны иметь общий интерфейс. Наши продукты – машина и ее мануал
  4. Директор определяет порядок вызова строительных шагов для производства той или иной конфигурации продуктов
  5. Обычно Клиент подаёт в конструктор директора уже готовый объект-строитель, и в дальнейшем данный директор использует только его. Но возможен и другой вариант, когда клиент передаёт строителя через параметр строительного метода директора. В этом случае можно каждый раз применять разных строителей для производства различных представлений объектов

Когда использовать:

  1. Когда вы хотите избавиться от «телескопического конструктора» Это тот случай, если у нас есть конструктор с кучей опциональных параметров. Их неудобно вызывать, поэтому можно создать много конструкторы с меньшим количеством параметров. Тем не менее это захламляет код и делает его неудобным и неаккуратным
  2. Когда ваш код должен создавать разные представления какого-то объекта. Например, деревянные и железобетонные дома Строитель уместен при создании нескольких представлений объекта с одинаковыми этапами, но с разными деталями

Код

Я выбрала такие свойства машины как количество мест, модель двигателя, руль и наличие gps. Все находится в main!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages