Pull to refresh

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.

Articles