Comments 9
В Kotlin
нет места билдерам.
Идиоматично, использовать в таком случае комбинацию дефолтных и именованных параметров
class House(
val walls: Int = 0,
val doors: Int = 0,
val windows: Int = 0,
val hasGarage: Boolean = false,
val hasSwimmingPool: Boolean = false
)
fun main() {
val house = House(
walls = 4,
doors = 2,
windows = 6,
hasGarage = true,
)
println("Дом с ${house.walls} стенами, ${house.doors} дверями, " +
"${house.windows} окнами, гараж: ${house.hasGarage}")
}
Благодарю. В моем примере использование билдера, и вправду, избыточно. Однако, есть ситуации, когда паттерн Builder все же полезен в Kotlin.
например?
Возможно в комбинации со скоуп функциями? Хотя, действительно, придумать кейс, не высосаный из пальца, довольно сложно =)
Например когда необходимо осуществлять валидацию или другие дополнительные действия при создании или когда нужно избежать перегрузки конструкторов и сохранить неизменяемость объекта.
Вот это поворот
https://kotlinlang.org/docs/type-safe-builders.html
Sign up to leave a comment.
Паттерны проектирования на языке Kotlin (часть 1)