Sobes.tech
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.