Sobes.tech
Junior — Middle

Pouvez-vous expliquer le concept de dépendance inversée et son rôle dans la conception des systèmes?

sobes.tech IA

Réponse de l'IA

L'inversion de contrôle (IoC) est un principe de conception selon lequel la gestion des dépendances entre les composants du système est transférée à un conteneur ou un framework externe, plutôt que d'être créée directement à l'intérieur des composants.

Rôle dans la conception des systèmes :

  • Améliore la modularité et la testabilité, car les composants ne dépendent pas d'implémentations spécifiques, mais les reçoivent de l'extérieur.
  • Facilite le remplacement et l'extension des composants sans modifier le code qui les utilise.

Exemple : au lieu que la classe crée elle-même l'objet de dépendance, elle le reçoit via le constructeur ou un setter. Cela permet de changer facilement les implémentations, par exemple pour les tests.

protocol Service {
    func doWork()
}

class RealService: Service {
    func doWork() { print("Travail effectué") }
}

class Client {
    let service: Service
    init(service: Service) {
        self.service = service
    }
}

let service = RealService()
let client = Client(service: service)

Ici, Client ne crée pas le RealService lui-même, mais le reçoit de l'extérieur — c'est l'inversion de dépendance.