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.