Interface Segregation Principle
PHP 🟡 MidDefinition
Les clients ne doivent pas etre forces d'implementer des interfaces qu'ils n'utilisent pas. Privilegier plusieurs petites interfaces a une grande interface generale.
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 differentes classes n'ont besoin que d'un sous-ensemble du comportement d'une interface.
Anti-pattern
Une interface avec 15 methodes dont la plupart des classes n'en implementent que 3.