Junior — Middle
Poți să dai un exemplu de implementare a principiului inversării dependențelor într-un proiect?
sobes.tech AI
Răspuns de la AI
Principiul inversiunii dependențelor (Dependency Inversion Principle, DIP) afirmă că modulele de nivel superior nu trebuie să depindă direct de modulele de nivel inferior, ci ambele trebuie să depindă de abstracții (de exemplu, protocoale sau interfețe).
Exemplu în Swift pentru iOS:
// Abstracție
protocol DataService {
func fetchData() -> String
}
// Implementare concretă
class NetworkDataService: DataService {
func fetchData() -> String {
return "Date din rețea"
}
}
// Clasă care depinde de abstracție, nu de implementarea concretă
class ViewModel {
private let dataService: DataService
init(dataService: DataService) {
self.dataService = dataService
}
func getData() -> String {
return dataService.fetchData()
}
}
// Utilizare
let networkService = NetworkDataService()
let viewModel = ViewModel(dataService: networkService)
print(viewModel.getData()) // Va afișa: Date din rețea
Aici, ViewModel depinde de protocolul DataService, nu de clasa concretă NetworkDataService. Acest lucru permite schimbarea ușoară a implementării serviciului, de exemplu, pentru teste sau altă sursă de date, fără a modifica codul ViewModel.