Sobes.tech
Junior

Asılılıqların injeksiyası (DI) nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Asılılıq İnjeksiyası (DI) — bu dizayn nümunəsidir və burada bir komponentin asılılıqları xaricdən təmin edilir, özləri tərəfindən deyil. Bu, kodun daha çox elastikliyinə, test edilə bilməsinə və saxlanmasına imkan verir.

Əsas prinsiplər:

  • İnversiya nəzarəti (IoC): Komponent öz asılılıqlarını yaratmır.
  • Məsuliyyətlərin bölünməsi: Asılılıqların yaradılması onların istifadəsindən ayrıdır.

DI-nin üstünlükləri:

  • Yaxşı test edilə bilmə: Əsl asılılıqları testlərdə mock'lar ilə asanlıqla dəyişdirmək olar.
  • Qoşulmanın azaldılması: Komponentlər bir-birinə daha az bağlı olur.
  • Daha çox elastiklik və təkrar istifadə: Asılılığın həyata keçirilməsini dəyişdirmək, komponent kodunu dəyişdirmədən asan.
  • Asılılıqları idarə etmənin sadələşdirilməsi: Xüsusilə böyük layihələrdə.

Android-də DI-nin tətbiqi üsulları:

  1. Əl ilə (Manual DI): Asılılıqlar konstruktor və ya setter vasitəsilə verilir.
  2. Framework-lərdən istifadə: Dagger 2, Hilt, Koin. Bu framework-lər asılılıqların yaradılması və təmin olunması prosesini avtomatlaşdırır.

Əl ilə nümunə:

// Asılılıq
interface AnalyticsManager {
    fun trackEvent(eventName: String)
}

// Asılılığın həyata keçirilməsi
class FirebaseAnalyticsManager : AnalyticsManager {
    override fun trackEvent(eventName: String) {
        // Firebase-də izləmə məntiqi
    }
}

// Asılılığa ehtiyacı olan komponent
class UserRepository(private val analyticsManager: AnalyticsManager) { // Asılılıq konstruktor vasitəsilə verilir
    fun getUser(userId: String): User? {
        analyticsManager.trackEvent("UserFetched")
        // İstifadəçini əldə etmək məntiqi
        return null
    }
}

// Ob'ektlərin yaradılması və əlaqələndirilməsi yeri
fun main() {
    val analytics: AnalyticsManager = FirebaseAnalyticsManager()
    val userRepository = UserRepository(analytics) // Asılılıq injeksiyası
}