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 A
a 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é Z
consiste en fonctionnalité A
, B
et C
. Je crée une classe de façadeZ
qui, à travers des interfaces, utilise des classes A
, B
et C
. Je commence à coder la mise en œuvre et à un moment je me rends compte que la tâche Z
consiste en fait de fonctionnalité A
, B
et D
. Maintenant, je dois supprimer l' C
interface, le C
prototype de classe et écrire une D
interface 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.