Sobes.tech
Junior — Middle

Proqram təminatı inkişafı kontekstində Asılılıq Enjeksiyası və Asılılıq Tərsinə Çevirmə anlayışları arasındakı fərqləri izah edə bilərsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

Asılılığın İnteqrasiyası (DI) — obyektin asılılıqlarının xaricdən ona ötürülməsi ilə həyata keçirilən dizayn nümunəsidir, daxildə yaradılmır. Bu, asılılıqların həyata keçirilməsini asanlaşdırır, testləri sadələşdirir və kodun modulluğunu artırır.

Asılılığın Tərs Çevrilməsi Prinsipi (DIP) — SOLID-in beş prinsipindən biridir və deyir ki:

  • Yüksək səviyyəli modullar aşağı səviyyəli modullara bağlı olmamalıdır. Hər ikisi abstraksiyalara bağlı olmalıdır.
  • Abstraksiyalar detallara bağlı olmamalıdır. Detallar abstraksiyalara bağlı olmalıdır.

Sadə dillə desək, DIP, komponentlər arasındakı əlaqəni azaltmaq üçün abstraksiyalardan (məsələn, interfeyslər) istifadə etməyə yönəlib.

Aralarındakı əlaqə: DI, DIP-ni həyata keçirməyin bir yoludur. DI istifadə etməklə, biz asılılıqları konstruktor və ya setterlər vasitəsilə ötürürük, bu da modullara konkret həyata keçirmələrdən çox, abstraksiyalara bağlı olmağa imkan verir.

Swift-də nümunə:

protocol NetworkService {
    func fetchData()
}

class APIService: NetworkService {
    func fetchData() {
        print("API-dən məlumatların alınması")
    }
}

class ViewModel {
    private let networkService: NetworkService

    // Asılılığın konstruktor vasitəsilə injeksiyası
    init(networkService: NetworkService) {
        self.networkService = networkService
    }

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

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

Burada, ViewModel, NetworkService (DIP) abstraksiyasına bağlıdır və konkret həyata keçirmə xaricdən (DI) ötürülür.