Sobes.tech
Junior — Middle

Dasturlashda bog'liqliklarni teskari aylantirish prinsipi va bog'liqliklarni injektsiya qilish o'rtasidagi farqlarni tushuntirib bera olasizmi?

sobes.tech AI

AIdan javob

Bağlılıkların Tersine Çevrilmesi İlkesi (Dependency Inversion Principle, DIP), SOLID ilkelerinden biridir ve yüksek seviyeli modüllerin düşük seviyeli modüllere doğrudan bağlı olmaması gerektiğini, her ikisinin de soyutlamalara (örneğin, arayüzlere) bağlı olması gerektiğini belirtir. Soyutlamalar detaylara bağlı olmamalı, detaylar soyutlamalara bağlı olmalıdır. Bu, mimariyi daha esnek ve kolay genişletilebilir hale getirir.

Bağımlılık Enjeksiyonu (Dependency Injection, DI), bu ilkeyi uygulayan somut bir desen veya tekniktir. DI, bir nesnenin bağımlılıklarının dışarıdan (örneğin, yapıcı, ayar veya yöntem aracılığıyla) iletildiği anlamına gelir ve bu bağımlılıklar nesne içinde oluşturulmaz. Bu, testleri ve bileşenlerin değiştirilmesini kolaylaştırır.

Başka bir deyişle:

  • DIP, bir tasarım kuralı veya ilkesidir.
  • DI, bu ilkeyi pratikte uygulamanın bir yoludur.

Swift'te örnek:

protocol NetworkService {
    func fetchData()
}

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

class ViewModel {
    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()