Sobes.tech
Junior — Middle

Pouvez-vous expliquer les différences entre le principe d'inversion des dépendances et l'injection de dépendances en programmation?

sobes.tech IA

Réponse de l'IA

Le principe d'inversion des dépendances (Dependency Inversion Principle, DIP) est l'un des cinq principes SOLID, qui stipule que les modules de haut niveau ne doivent pas dépendre directement des modules de bas niveau, mais que les deux doivent dépendre d'abstractions (par exemple, des interfaces). Les abstractions ne doivent pas dépendre des détails, mais les détails doivent dépendre des abstractions. Cela aide à rendre l'architecture plus flexible et facilement extensible.

L'injection de dépendances (Dependency Injection, DI) est un motif ou une technique concrète qui met en œuvre le principe d'inversion des dépendances. DI signifie que les dépendances d'un objet lui sont passées de l'extérieur (par exemple, via le constructeur, un setter ou une méthode), plutôt que d'être créées à l'intérieur de l'objet. Cela facilite les tests et le remplacement des composants.

En d'autres termes :

  • DIP est une règle ou un principe de conception.
  • DI est une façon de mettre en œuvre ce principe en pratique.

Exemple en Swift :

protocol NetworkService {
    func fetchData()
}

class APIService: NetworkService {
    func fetchData() {
        print("Récupération des données de l'API")
    }
}

class ViewModel {
    let networkService: NetworkService

    // Injection de dépendance via le constructeur
    init(networkService: NetworkService) {
        self.networkService = networkService
    }

    func load() {
        networkService.fetchData()
    }
}

let apiService = APIService()
let viewModel = ViewModel(networkService: apiService)
viewModel.load()