Sobes.tech
Junior

Bağımlılık enjeksiyonu (DI) nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Bağımlılık Enjeksiyonu (DI), bir bileşenin bağımlılıklarının dışarıdan sağlandığı, kendisinin değil. Bu, kodun daha fazla esnekliğe, test edilebilirliğe ve sürdürülebilirliğe ulaşmasını sağlar.

Temel ilkeler:

  • Kontrolün Tersine Çevrilmesi (IoC): Bileşen, bağımlılıklarını kendisi oluşturmaz.
  • Sorumlulukların Ayrılması: Bağımlılıkların oluşturulması, kullanımdan ayrıdır.

DI avantajları:

  • Geliştirilmiş test edilebilirlik: Gerçek bağımlılıkların testlerde mock'lar ile kolayca yer değiştirilmesi.
  • Bağlılığın azaltılması: Bileşenler birbirine daha az bağımlı hale gelir.
  • Daha fazla esneklik ve yeniden kullanılabilirlik: Bağımlılıkların uygulamasını, bileşenin kodunu değiştirmeden kolayca değiştirmek.
  • Bağımlılıkların yönetiminin kolaylaştırılması: Özellikle büyük projelerde.

Android'de DI uygulama yöntemleri:

  1. Elle (Manual DI): Bağımlılıklar yapıcıya veya setter'lara geçirilir.
  2. Framework kullanımı: Dagger 2, Hilt, Koin. Bu framework'ler, bağımlılıkların oluşturulması ve sağlanması sürecini otomatikleştirir.

Elle örnek:

// Bağımlılık
interface AnalyticsManager {
    fun trackEvent(eventName: String)
}

// Bağımlılık uygulaması
class FirebaseAnalyticsManager : AnalyticsManager {
    override fun trackEvent(eventName: String) {
        // Firebase'de takip mantığı
    }
}

// Bağımlılığı ihtiyaç duyan bileşen
class UserRepository(private val analyticsManager: AnalyticsManager) { // Bağımlılık yapıcıya geçirilir
    fun getUser(userId: String): User? {
        analyticsManager.trackEvent("UserFetched")
        // Kullanıcıyı alma mantığı
        return null
    }
}

// Nesnelerin oluşturulup bağlandığı yer
fun main() {
    val analytics: AnalyticsManager = FirebaseAnalyticsManager()
    val userRepository = UserRepository(analytics) // Bağımlılık enjeksiyonu
}