Junior — Middle
Pouvez-vous donner un exemple de mise en œuvre du principe d'inversion des dépendances dans un projet?
sobes.tech IA
Réponse de l'IA
Le principe d'inversion des dépendances (Dependency Inversion Principle, DIP) stipule que les modules de niveau supérieur ne doivent pas dépendre directement des modules de niveau inférieur, mais que les deux doivent dépendre d'abstractions (par exemple, des protocoles ou des interfaces).
Exemple en Swift pour iOS :
// Abstraction
protocol DataService {
func fetchData() -> String
}
// Implémentation concrète
class NetworkDataService: DataService {
func fetchData() -> String {
return "Données du réseau"
}
}
// Classe qui dépend de l'abstraction, pas de l'implémentation concrète
class ViewModel {
private let dataService: DataService
init(dataService: DataService) {
self.dataService = dataService
}
func getData() -> String {
return dataService.fetchData()
}
}
// Utilisation
let networkService = NetworkDataService()
let viewModel = ViewModel(dataService: networkService)
print(viewModel.getData()) // Affiche : Données du réseau
Ici, ViewModel dépend du protocole DataService, et non de la classe concrète NetworkDataService. Cela permet de changer facilement l'implémentation du service, par exemple pour les tests ou une autre source de données, sans modifier le code de ViewModel.