Les principes SOLID démystifiés — (I)

Apr 17 2023
Principe de séparation des interfaces
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.

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

  1. Cohésion élevée — meilleure compréhensibilité, robustesse.
  2. Couplage faible - meilleure maintenabilité, haute résistance aux changements.
  3. Les classes ne sont pas obligées d'implémenter des interfaces qu'elles n'utilisent pas.