Junior — Middle
Può spiegare il concetto di dipendenza inversa e il suo ruolo nella progettazione dei sistemi?
sobes.tech AI
Risposta dell'AI
L'inversione del controllo (IoC) è un principio di progettazione in cui la gestione delle dipendenze tra i componenti del sistema viene trasferita a un contenitore o framework esterno, anziché essere creata direttamente all'interno dei componenti.
Ruolo nella progettazione dei sistemi:
- Aumenta la modularità e la testabilità, poiché i componenti non dipendono da implementazioni specifiche, ma le ricevono dall'esterno.
- Facilita la sostituzione e l'espansione dei componenti senza modificare il codice che li utilizza.
Esempio: invece che la classe crei direttamente l'oggetto di dipendenza, lo riceve tramite il costruttore o un metodo setter. Questo permette di scambiare facilmente le implementazioni, ad esempio per i test.
protocol Service {
func doWork()
}
class RealService: Service {
func doWork() { print("Lavoro completato") }
}
class Client {
let service: Service
init(service: Service) {
self.service = service
}
}
let service = RealService()
let client = Client(service: service)
Qui, il Client non crea il RealService da solo, ma lo riceve dall'esterno — questa è inversione di dipendenza.