Junior — Middle
Kas sa saad selgitada delegatsiooni kontseptsiooni Kotlin keeles ja selle rakendamist?
sobes.tech AI
Vastus AI-lt
Kotlinis delegācija ir mehānisms, kas ļauj pārsūtīt noteiktas saskarnes vai īpašības īstenošanu citam objektam, nevis to tieši īstenot klasē. Tas palīdz izvairīties no koda dublēšanas un vienkāršo kompozīciju.
Visbiežāk sastopamais piemērs ir īpašību delegācija, izmantojot atslēgvārdu by.
Īpašību delegācijas piemērs:
class User {
var name: String by Delegates.observable("") { prop, old, new ->
println("Īpašība ${prop.name} mainījās no $old uz $new")
}
}
Tāpat ir iespējams delegēt saskarnes īstenošanu:
interface Printer {
fun print()
}
class RealPrinter : Printer {
override fun print() {
println("Dokumenta drukāšana")
}
}
class Manager(printer: Printer) : Printer by printer
fun main() {
val realPrinter = RealPrinter()
val manager = Manager(realPrinter)
manager.print() // izsaukums tiek delegēts uz realPrinter
}
Šī pieeja ļauj sadalīt atbildību un atkārtoti izmantot kodu bez mantošanas.