Sobes.tech
Junior — Middle

Kā īstenot Builder paraugu Kotlin?

sobes.tech AI

Atbilde no AI

Kotlin'ā, Builder modeļa īstenošana var notikt ar iekšēju DSL vai iekšēju Builder klasi. Bieži tiek izmantots apply ērtai objekta konfigurācijai.

Klasisks Builder piemērs ar iekšēju klasi:

class User private constructor(
    val name: String?,
    val age: Int?
) {
    data class Builder(
        var name: String? = null,
        var age: Int? = null
    ) {
        fun name(name: String) = apply { this.name = name }
        fun age(age: Int) = apply { this.age = age }
        fun build() = User(name, age)
    }
}

// Lietošana:
val user = User.Builder()
    .name("Ivan")
    .age(30)
    .build()

Tāpat var izmantot lambda funkciju ar apply, lai iegūtu vairāk idiomātisku Kotlin stilu:

data class User(var name: String? = null, var age: Int? = null)

fun user(block: User.() -> Unit) = User().apply(block)

// Lietošana:
val user = user {
    name = "Ivan"
    age = 30
}