Sobes.tech
Junior — Middle

Pouvez-vous expliquer ce que l'on entend par principe d'inversion des dépendances en programmation orientée objet?

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 en programmation orientée objet. Il stipule :

  • Les modules de haut niveau ne doivent pas dépendre des modules de bas niveau. Les deux doivent dépendre d'abstractions.
  • Les abstractions ne doivent pas dépendre des détails. Les détails doivent dépendre des abstractions.

Cela signifie qu'au lieu qu'une classe crée ou utilise directement des implémentations concrètes d'autres classes, elle doit travailler avec des abstractions (par exemple, des interfaces ou des protocoles). Cela augmente la flexibilité et facilite les tests.

Exemple en Swift (iOS) :

protocol DataService {
    func fetchData() -> String
}

class APIService: DataService {
    func fetchData() -> String {
        return "Données de l'API"
    }
}

class ViewModel {
    private let service: DataService

    init(service: DataService) {
        self.service = service
    }

    func load() {
        print(service.fetchData())
    }
}

let apiService = APIService()
let viewModel = ViewModel(service: apiService)
viewModel.load()  // Affichera : Données de l'API

Ici, ViewModel dépend de l'abstraction DataService, et non de l'implémentation concrète APIService. Cela permet de remplacer facilement l'implémentation du service, par exemple, par un mock pour les tests.