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:
- Elle (Manual DI): Bağımlılıklar yapıcıya veya setter'lara geçirilir.
- 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
}