Junior — Middle
Можеш ли да објасниш концепт делегирања у језику Kotlin и његову примену?
sobes.tech АИ
Одговор од АИ
U Kotlinu, delegacija je mehanizam koji omogućava prenos implementacije određene interfejs ili svojstva na drugi objekat, umesto da je direktno implementira u klasi. Ovo pomaže da se izbegne dupliranje koda i pojednostavi kompozicija.
Najčešći primer je delegacija svojstava pomoću ključne reči by.
Primer delegacije svojstva:
class User {
var name: String by Delegates.observable("") { prop, old, new ->
println("Svojstvo ${prop.name} se promenilo sa $old na $new")
}
}
Takođe, može se delegirati implementacija interfejsa:
interface Printer {
fun print()
}
class RealPrinter : Printer {
override fun print() {
println("Štampanje dokumenta")
}
}
class Manager(printer: Printer) : Printer by printer
fun main() {
val realPrinter = RealPrinter()
val manager = Manager(realPrinter)
manager.print() // poziv se delegira na realPrinter
}
Ovaj pristup omogućava razdvajanje odgovornosti i ponovno korišćenje koda bez nasleđivanja.