Ответ
В Kotlin можно реализовать Builder через DSL или классический подход с вложенным классом. Вот пример классического Builder:
class Car private constructor(
val model: String,
val color: String,
val year: Int
) {
class Builder {
private var model: String = ""
private var color: String = "white"
private var year: Int = 2020
fun setModel(model: String) = apply { this.model = model }
fun setColor(color: String) = apply { this.color = color }
fun setYear(year: Int) = apply { this.year = year }
fun build() = Car(model, color, year)
}
}
// Использование:
val car = Car.Builder()
.setModel("Tesla")
.setColor("red")
.setYear(2023)
.build()
Ключевые моменты:
- Основной класс с
private constructor - Вложенный
Builderкласс с публичными методами - Методы возвращают
this(черезapply) для чейнинга - Финальный метод
build()создает объект