J'essaie actuellement de comprendre SOLID. Donc, le principe d'inversion de dépendance signifie que deux classes quelconques doivent communiquer via des interfaces, pas directement. Exemple: Si class Aa une méthode qui attend un pointeur sur un objet de type class B, cette méthode devrait en fait attendre un objet de type abstract base class of B. Cela aide aussi pour Open / Close.
À condition d’avoir bien compris cela, ma question est de savoir si c’est une bonne pratique de l’appliquer à toutes les interactions de classe ou devrais-je essayer de penser en termes de couches ?
Je suis sceptique parce que nous payons un prix pour suivre ce principe. Dis, j'ai besoin d'implémenter une fonctionnalité Z. Après analyse, je conclus que cette fonctionnalité Zconsiste en fonctionnalité A, Bet C. Je crée une classe de façadeZ qui, à travers des interfaces, utilise des classes A, Bet C. Je commence à coder la mise en œuvre et à un moment je me rends compte que la tâche Zconsiste en fait de fonctionnalité A, Bet D. Maintenant, je dois supprimer l' Cinterface, le Cprototype de classe et écrire une Dinterface et une classe séparées . Sans interfaces, seule la classe aurait dû être remplacée.
En d'autres termes, pour changer quelque chose, je dois changer 1. l'appelant 2. l'interface 3. la déclaration 4. l'implémentation. Dans un python couplé directement la mise en œuvre, je besoin de changer seulement la mise en œuvre.