Interface Segregation Principle
Architecture 🟡 MidDéfinition
Un client ne doit pas être force de dépendre d'interfaces qu'il n'utilise pas. Préférer plusieurs interfaces spécifiques a une seule interface générâle.
Analogie
Une télécommande par appareil plutôt qu'une télécommande universelle avec 200 boutons dont tu n'en utilises que 5.
Exemple de code
// Mauvais: interface Animal { fly(); swim(); run(); }
// Bon:
interface Flyable { fly(): void; }
interface Swimmable { swim(): void; }
class Duck implements Flyable, Swimmable { }
Cas d'usage
Éviter les implémentations vides ou les throws 'not supported' dans les classes.
Anti-pattern
Fat interface avec 20 méthodes dont la plupart des implementeurs n'en utilisent que 3.