Les principes SOLID démystifiés — (I)
Les interfaces ne doivent pas forcer les classes à implémenter des fonctionnalités qu'elles ne prennent pas en charge, ce qui signifie que les interfaces plus grandes doivent être divisées en plus petites pour offrir un support.
Exemple de scénario
Utilisons le même scénario avec la classe AreaCalculator et ajoutons-y de nouvelles fonctionnalités. Cette fois, l'utilisateur souhaite la somme du volume de formes telles que Cube, Cuboid, etc.
Mal écrit
Toute forme que vous créez doit implémenter la méthode de volume , mais vous savez que les carrés sont des formes plates et qu'ils n'ont pas de volumes, donc cette interface forcerait la classe Square à implémenter une méthode dont elle n'a aucune utilité.
Cela viole le principe de ségrégation d'interface.
Bien écrit
Pour remédier à cette violation, nous devons créer une nouvelle interface appelée IShape3D pour gérer les formes qui ont un volume et conserver l'interface IShape telle qu'elle est pour gérer les formes 2D.
Principaux avantages
- Cohésion élevée — meilleure compréhensibilité, robustesse.
- Couplage faible - meilleure maintenabilité, haute résistance aux changements.
- Les classes ne sont pas obligées d'implémenter des interfaces qu'elles n'utilisent pas.
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































