Sobes.tech
Junior — Middle

Czy możesz wyjaśnić koncepcję delegowania w języku Kotlin i jej zastosowanie?

sobes.tech AI

Odpowiedź od AI

W Kotlinie delegacja to mechanizm, który pozwala przekazać implementację określonego interfejsu lub właściwości innemu obiektowi, zamiast implementować ją bezpośrednio w klasie. Pomaga to uniknąć duplikacji kodu i upraszcza kompozycję.

Najczęstszym przykładem jest delegacja właściwości za pomocą słowa kluczowego by.

Przykład delegacji właściwości:

class User {
    var name: String by Delegates.observable("") { prop, old, new ->
        println("Właściwość ${prop.name} zmieniła się z $old na $new")
    }
}

Można również delegować implementację interfejsu:

interface Printer {
    fun print()
}

class RealPrinter : Printer {
    override fun print() {
        println("Drukowanie dokumentu")
    }
}

class Manager(printer: Printer) : Printer by printer

fun main() {
    val realPrinter = RealPrinter()
    val manager = Manager(realPrinter)
    manager.print() // wywołanie deleguje do realPrinter
}

Takie podejście pozwala na podział odpowiedzialności i ponowne użycie kodu bez dziedziczenia.