Получи случайную криптовалюту за регистрацию!

​​Паттерн Builder в Kotlin #patterns Паттерн Builder использ | Android Live 🤖

​​Паттерн Builder в Kotlin
#patterns

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

Этот паттерн широко используется в различных библиотеках или подходах. Например, в Android одним из самых распространённых примеров является создание AlertDialog при помощи Builder.

Вот хорошая статья, которая рассказывает о правильном создании объектов при помощи Builder. Пару тезисов оттуда:

Как ни странно, при создании объекта через Builder важно верно определить конструктор, который будет принимать параметры без которых объект не может существовать. В примере с AlertDialog таким параметром будет Context.
Например, в прошлых версиях Android у нас была возможность сделать Notification, который не показывался бы системой, а также приложение не падало с исключением – пример неверно созданного Builder.

Для каждого поля необходимо выставить параметр по умолчанию, например null. При использовании шаблона Builder рекомендуется сделать конструктор private, чтобы ограничить создание объекта только для внутреннего Builder.

Важно сделать верификацию объектов. Автор дает сразу 3 примера, где можно верифицировать добавляемые объекты: сразу после использования метода, при вызове метода build() или уже внутри объекта.
Хорошей практикой в данном примере будет использование 2 и 3 подхода одновременно.

Для того, чтобы сделать свой Builder можно использовать Kotlin DSL, который идеально подходит для этого паттерна. Кроме того, не стоит забывать о именованных параметрах, особенно когда вы указываете переменные одного типа.

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