Interface Segregation Principle
PHP 🟡 MidDéfinition
Les clients ne doivent pas être forces d'implémenter des interfaces qu'ils n'utilisent pas. Privilégier plusieurs petites interfaces a une grande interface générâle.
Analogie
Comme un menu a la carte vs un menu fixe : on choisit uniquement ce qu'on veut manger.
Exemple de code
// Mauvais: interface grasse
// interface Worker { work(); eat(); sleep(); }
// Bon: interfaces segregees
interface Workable { public function work(): void; }
interface Feedable { public function eat(): void; }
class Robot implements Workable {
public function work(): void { /* ... */ }
}
Cas d'usage
Quand différentes classes n'ont besoin que d'un sous-ensemble du comportement d'une interface.
Anti-pattern
Une interface avec 15 méthodes dont la plupart des classes n'en implémentent que 3.