Kotlin-də nümayəndəlik nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Kotlin-də delegasiya, obyektin (delegat) başqa bir obyekt adından müəyyən bir vəzifəni yerinə yetirmək məsuliyyətini öz üzərinə götürdüyü dizayn nümunəsidir. Kotlin sintaksis səviyyəsində təbii olaraq delegasiyanı dəstəkləyir.
Kotlin-də iki əsas delegasiya növü mövcuddur:
-
Sinif delegasiyası (Class Delegation): Bu, A sinfinin interfeysi həyata keçirməsinə imkan verir və bu interfeysin bütün metod çağırışlarını başqa bir B obyektinə delegasiya edir.
interface Base { fun printMessage() } class BaseImpl(val x: Int) : Base { override fun printMessage() { // İnterfeys metodunun həyata keçirilməsi println(x) } } class Derived(b: Base) : Base by b // Base sinfinə delegasiyaNümunədə,
DerivedBase-in həyata keçirilməsinibobyektinə delegasiya edir. -
Xüsusiyyət delegasiyası (Delegated Properties): Bu, bir xüsusiyyətin alınması və təyin olunması məntiqini başqa bir obyektə delegasiya etməyə imkan verir. Kotlin bir neçə standart delegat təqdim edir:
lazy()gecikdirilmiş başlanğıc üçün.val lazyValue: String by lazy { // Yalnız ilk müraciətdə icra olunur println("hesablanır!") "Salam" }Delegates.observable()dəyişikliklər barədə dinləyicilərə bildiriş üçün.import kotlin.properties.Delegates var name: String by Delegates.observable("başlanğıc dəyər") { prop, köhnə, yeni -> println("$köhnə -> $yeni") }Delegates.vetoable()dəyişiklikləri onların tətbiqindən əvvəl ələ keçirmək üçün.import kotlin.properties.Delegates var max: Int by Delegates.vetoable(0) { prop, köhnə, yeni -> yeni > köhnə }- Xəritə (
map) xüsusiyyətlərinə bağlamaq üçün delegatlar.İstifadə:class User(val map: Map<String, Any?>) { val name: String by map val age: Int by map }User(mapOf("name" to "John Doe", "age" to 25))
Kotlin-də delegasiyanın üstünlükləri:
- Boilerplate kodun azaldılması: Metod çağırışlarını və ya xüsusiyyət məntiqini avtomatik yönləndirmə.
- Kodun təkrar istifadəsi: Mövcud delegatları istifadə etmək və ya öz delegatlarını yaratmaq imkanı.
- Məsuliyyətlərin bölünməsi: Xüsusiyyət və ya interfeys məntiqinin aydın bölünməsi.
- Esneklik: Delegasiya davranışını dəyişdirmək, sinfi dəyişdirmədən mümkündür.