Junior — Middle
Можете ли да објасните предности и недостатке коришћења инверзије зависности у програмирању?
sobes.tech АИ
Одговор од АИ
Inverzija zavisnosti (Dependency Inversion) je princip, prema kojem visoko nivo modula ne zavisi od nisko nivo modula, već oba zavise od apstrakcija.
Prednosti:
- Poboljšava modularnost i testabilnost koda, jer se zavisnosti lako mogu zameniti.
- Povećava fleksibilnost i proširivost aplikacije.
- Smanjuje povezanost komponenti.
Nedostaci:
- Komplikuje arhitekturu, posebno u malim projektima.
- Zahteva dodatno vreme za projektovanje apstrakcija.
- Može dovesti do prevelikog broja interfejsa i klasa.
Primer u Swift:
protocol DataService {
func fetchData() -> String
}
class APIService: DataService {
func fetchData() -> String {
return "Podaci sa 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())
Ovde, ViewModel zavisi od apstrakcije DataService, a ne od konkretne implementacije APIService.