Junior — Middle
Mohl byste vysvětlit výhody a nevýhody použití inverze závislostí v programování?
sobes.tech AI
Odpověď od AI
Princip závislostní inverze (Dependency Inversion) je zásada, podle které vysoké úrovně moduly nezávisí na nízkých úrovních, ale oba závisí na abstrakcích.
Výhody:
- Zlepšuje modularitu a testovatelnost kódu, protože závislosti lze snadno měnit.
- Zvyšuje flexibilitu a rozšiřitelnost aplikace.
- Snižuje propojenost komponent.
Nevýhody:
- Ztěžuje architekturu, zejména v malých projektech.
- Vyžaduje další čas na navrhování abstrakcí.
- Může vést k nadměrnému počtu rozhraní a tříd.
Příklad v Swift:
protocol DataService {
func fetchData() -> String
}
class APIService: DataService {
func fetchData() -> String {
return "Data 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())
Zde závisí ViewModel na abstrakci DataService, nikoliv na konkrétní implementaci APIService.