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.