Sobes.tech
Junior — Middle

Yazılım geliştirme bağlamında Bağımlılık Enjeksiyonu ve Bağımlılık Tersine Çevirme kavramları arasındaki farkları açıklayabilir misiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Bağımlılık Enjeksiyonu (DI) — bir nesnenin bağımlılıklarının dışarıdan ona aktarılmasıyla gerçekleştirilen tasarım desenidir, içerde oluşturulmaz. Bu, bağımlılıkların uygulamalarını kolayca değiştirmeye, testleri basitleştirmeye ve kodun modülerliğini artırmaya olanak tanır.

Bağımlılıkların Ters Çevirme Prensibi (DIP) — SOLID'in beş prensibinden biridir ve şunu söyler:

  • Yüksek seviyeli modüller düşük seviyeli modüllere bağlı olmamalıdır. Her ikisi de soyutlamalara bağlı olmalıdır.
  • Soyutlamalar detaylara bağlı olmamalıdır. Detaylar soyutlamalara bağlı olmalıdır.

Basitçe söylemek gerekirse, DIP, soyutlamalar (örneğin, arayüzler) kullanarak bileşenler arasındaki bağımlılığı azaltmaya yöneliktir.

Aralarındaki ilişki: DI, DIP'yi uygulamanın bir yoludur. DI kullanarak, bağımlılıkları yapıcı veya ayar metodlarıyla geçiririz, bu da modüllerin somut uygulamalardan çok soyutlamalara bağlı olmasını sağlar.

Swift'te örnek:

protocol NetworkService {
    func fetchData()
}

class APIService: NetworkService {
    func fetchData() {
        print("API'den veri alınıyor")
    }
}

class ViewModel {
    private let networkService: NetworkService

    // Bağımlılık Enjeksiyonu yapıcı aracılığıyla
    init(networkService: NetworkService) {
        self.networkService = networkService
    }

    func load() {
        networkService.fetchData()
    }
}

let apiService = APIService()
let viewModel = ViewModel(networkService: apiService)
viewModel.load()

Burada, ViewModel, soyutlama olan NetworkService'e (DIP) bağlıdır ve gerçek uygulama dışarıdan (DI) aktarılır.