Junior — Middle
Puteți explica ce înseamnă principiul inversiunii dependențelor în programarea orientată pe obiecte?
sobes.tech AI
Răspuns de la AI
Principiul inversiunii dependențelor (Dependency Inversion Principle, DIP) este unul dintre cele cinci principii SOLID în programarea orientată pe obiecte. Acesta afirmă:
- Modulele de nivel înalt nu trebuie să depindă de modulele de nivel scăzut. Ambele trebuie să depindă de abstracții.
- Abstracțiile nu trebuie să depindă de detalii. Detaliile trebuie să depindă de abstracții.
Aceasta înseamnă că, în loc ca o clasă să creeze sau să utilizeze direct implementări concrete ale altor clase, ea trebuie să lucreze cu abstracții (de exemplu, interfețe sau protocoale). Acest lucru crește flexibilitatea și facilitează testarea.
Exemplu în Swift (iOS):
protocol DataService {
func fetchData() -> String
}
class APIService: DataService {
func fetchData() -> String {
return "Date din API"
}
}
class ViewModel {
private let service: DataService
init(service: DataService) {
self.service = service
}
func load() {
print(service.fetchData())
}
}
let apiService = APIService()
let viewModel = ViewModel(service: apiService)
viewModel.load() // Va afișa: Date din API
Aici, ViewModel depinde de abstracția DataService, nu de implementarea concretă APIService. Acest lucru permite înlocuirea ușoară a implementării serviciului, de exemplu, cu un mock pentru teste.