Шаблоны программирования на Swift: Builder

builder_proSwift

Продолжаем изучать шаблоны программирования на Swift. И сегодня будем разбирать шаблон Builder.

Builder

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

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

1. Создание сложного объекта
2. Процесс создания объекта тоже очень не тривиальный – к примеру получение данных из базы и манипуляция ими.

Сам паттерн состоит из двух компонент – Bulilder и Director. Builder занимается именно построением объекта, а Director знает какой Builder использовать чтобы выдать необходимый продукт.

Пускай у нас есть телефон, который обладает следующими свойствами:

Давайте создадим дженерик строителя от которого будут наследоваться конкретные строители:

Ну а теперь напишем код для конкретных строителий. К примеру, так бы выглядел строитель для дешевого телефона:

И конечно же строительство дорогого телефона:

Кто-то же должен использовать строителей, потому давайте создадим объект который будет с помощью строителей создавать дешевые или дорогие телефоны:

Ну теперь давайте посмотрим что же у нас получилось:

И вывод в консоль:

Пример с GitHub

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

Сама Звезда Смерти инициализируется с помощью созданного нами строителя.

И теперь используем все что написали для создания объектов.

Тут мы создаем строителя, путем передачи той самой функции, о которой говорилось выше. Эта функция присваивает значения координатам, но запросто могла бы вычислить сложные математические уравнения расчета движения космической станции в подпространстве.  А после получаем Звезду Смерти, используя строителя.

 

 

Метки:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*