Sobes.tech
Junior — Middle

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

sobes.tech AI

Odpowiedź od AI

W Kotlinie delegacja to mechanizm, który pozwala przekazywać implementację określonego interfejsu lub właściwości innemu obiektowi, zamiast implementować ją bezpośrednio w klasie.

Główne rodzaje delegacji:

  1. Delegacja interfejsu — klasa implementuje interfejs, ale faktycznie wywołuje metody innego obiektu:
interface Base {
    fun print()
}

class BaseImpl(val x: Int) : Base {
    override fun print() { println(x) }
}

class Derived(b: Base) : Base by b

fun main() {
    val b = BaseImpl(10)
    Derived(b).print()  // Wypisze 10
}
  1. Delegacja właściwości — pozwala nadpisywać zachowanie getterów i setterów za pomocą specjalnych delegatów, takich jak lazy, observable lub własne:
val lazyValue: String by lazy {
    println("Obliczanie wartości")
    "Cześć"
}

Użycie delegacji pomaga zmniejszyć duplikację kodu, zwiększyć elastyczność i ponowne użycie komponentów.