DevPrep

Все темы › Шаблоны проектирования

Builder: зачем он в Swift, если есть параметры по умолчанию?

Middle PRO

Суть

Builder — пошаговая сборка сложного объекта, отделённая от его итогового представления. В Java и Objective-C он во многом компенсировал отсутствие именованных параметров и значений по умолчанию. В Swift эту часть закрывают init с дефолтами и memberwise init структур: для struct Toast со свойствами var duration: Duration = .seconds(2) и var haptic = false вызов Toast(title: "Saved", haptic: true) уже читается как builder, отдельный тип не нужен.

Builder оправдан, когда объект собирается поэтапно в разных местах (базовая конфигурация плюс уточнения), между полями есть инварианты, которые проверяются в конце (build() throws), нужен декларативный DSL или удобные тестовые данные.

Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.

Полный ответ — в DevPrep

Потренируйтесь перед собеседованием

В DevPrep эти ответы превращаются в задачи на минуту: что напечатает код, найди баг, пробное собеседование. По задаче в день.

Скачать DevPrep в App Store