Sobes.tech
Middle

Ի՞նչ տեսակների դելեգատներ կան Kotlin-ում։

sobes.tech AI

Պատասխան AI-ից

  1. Անհատականության ներկայացուցիչներ (Property Delegates): Позволяют повторно использовать ընդհանուր տրամաբանությունը հատկությունների արժեքների ստացման/տեղադրման համար: Օրինակներ՝

    • lazy: Աշխատանքի ուշացման սկզբնականացում:
    • observable: Հաղորդում է հատկության արժեքի փոփոխության մասին:
    • vetoable: Позволяет отменить изменение значения свойства:
    • Map-ում պահվող հատկություններ:
    // Աշխատանքի ուշացման սկզբնականացում
    val lazyValue: String by lazy {
        println("Հաշվարկ lazyValue...")
        "Բարև"
    }
    
    // Դիտվող հատկություն
    var name: String by Delegates.observable("սկզբնական արժեք") {
        prop, old, new ->
        println("$old -> $new")
    }
    
  2. Ինտերֆեյսների ներկայացուցիչներ (Delegating Implementation): Позволяют делегировать реализацию интерфейса другому օբյեկտին: Դա "դեկորատոր" օրինակ է:

    interface Base {
        fun print()
    }
    
    class BaseImpl(val x: Int) : Base {
        override fun print() {
            print(x)
        }
    }
    
    class Derived(b: Base) : Base by b // Դելեգատավորում Base-ի իրականացմանը