Interface Segregation Principle

PHP 🟡 Mid

Definition

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.
#core#interview#solid