Junior — Middle
Mohol by ste vysvetliť výhody a nevýhody použitia invertovania závislostí v programovaní?
sobes.tech AI
Odpoveď od AI
Inverzia závislostí (Dependency Inversion) je princíp, podľa ktorého vysoké úrovne moduly nezávisia od nízkych úrovní, ale obe závisia od abstrakcií.
Výhody:
- Zlepšuje modularitu a testovateľnosť kódu, pretože závislosti je možné ľahko meniť.
- Zvyšuje flexibilitu a rozšíriteľnosť aplikácie.
- Znižuje prepojenosť komponentov.
Nevýhody:
- Zložitá architektúra, najmä v malých projektoch.
- Vyžaduje ďalší čas na navrhovanie abstrakcií.
- Môže viesť k nadmernému počtu rozhraní a tried.
Príklad v Swift:
protocol DataService {
func fetchData() -> String
}
class APIService: DataService {
func fetchData() -> String {
return "Dáta z API"
}
}
class ViewModel {
private let service: DataService
init(service: DataService) {
self.service = service
}
func getData() -> String {
return service.fetchData()
}
}
let apiService = APIService()
let viewModel = ViewModel(service: apiService)
print(viewModel.getData())
Tu závisí ViewModel od abstrakcie DataService, nie od konkrétnej implementácie APIService.