Junior — Middle
Kunt u het concept van omgekeerde afhankelijkheid en de rol ervan in systeemontwerp uitleggen?
sobes.tech AI
Antwoord van AI
Inversie van Controle (IoC) is een ontwerpprincipe waarbij het beheer van afhankelijkheden tussen componenten van het systeem wordt overgedragen aan een externe container of framework, in plaats van direct binnen de componenten te worden gemaakt.
Rol in systeemontwerp:
- Verhoogt modulariteit en testbaarheid, omdat componenten niet afhankelijk zijn van specifieke implementaties, maar deze van buitenaf ontvangen.
- Maakt het eenvoudig om componenten te vervangen en uit te breiden zonder de code die ze gebruikt te wijzigen.
Voorbeeld: in plaats van dat de klasse zelf het afhankelijkheidsobject aanmaakt, ontvangt deze het via de constructor of een setter. Dit maakt het gemakkelijk om implementaties te wisselen, bijvoorbeeld voor tests.
protocol Service {
func doWork()
}
class RealService: Service {
func doWork() { print("Werk voltooid") }
}
class Client {
let service: Service
init(service: Service) {
self.service = service
}
}
let service = RealService()
let client = Client(service: service)
Hier maakt de Client niet zelf de RealService, maar ontvangt deze van buiten — dit is inversie van afhankelijkheden.