Junior — Middle
Kunt u uitleggen wat het principe van afhankelijkheidsomkering inhoudt in objectgeoriënteerd programmeren?
sobes.tech AI
Antwoord van AI
Het Dependency Inversion Principle (DIP) is een van de vijf SOLID-principes in objectgeoriënteerd programmeren. Het stelt:
- Hoge-niveau modules mogen niet afhankelijk zijn van lage-niveau modules. Beiden moeten afhankelijk zijn van abstracties.
- Abstracties mogen niet afhankelijk zijn van details. Details moeten afhankelijk zijn van abstracties.
Dit betekent dat in plaats van dat een klasse direct concrete implementaties van andere klassen creëert of gebruikt, hij moet werken met abstracties (bijvoorbeeld interfaces of protocollen). Dit verhoogt de flexibiliteit en vergemakkelijkt testen.
Voorbeeld in Swift (iOS):
protocol DataService {
func fetchData() -> String
}
class APIService: DataService {
func fetchData() -> String {
return "Data van 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() // Output: Data van API
Hier hangt ViewModel af van de abstractie DataService, niet van de concrete implementatie APIService. Dit maakt het gemakkelijk om de service-implementatie te vervangen, bijvoorbeeld door een mock voor testen.