Interface Segregation Principle
Architecture 🟡 MidDefinition
Un client ne doit pas etre force de dependre d'interfaces qu'il n'utilise pas. Preferer plusieurs interfaces specifiques a une seule interface generale.
Analogie
Une telecommande par appareil plutot qu'une telecommande 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
Eviter les implementations vides ou les throws 'not supported' dans les classes.
Anti-pattern
Fat interface avec 20 methodes dont la plupart des implementeurs n'en utilisent que 3.