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ı:
- Əl ilə (Manual DI): Asılılıqlar konstruktor və ya setter vasitəsilə verilir.
- 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ı
}