Liskov Substitution Principle

PHP 🔴 Senior

Définition

Toute instance d'une classe parente doit pouvoir être remplacée par une instance de classe enfant sans casser le programme. Les sous-types doivent respecter le contrat du parent.

Analogie

Comme un remplaçant au football : il doit pouvoir jouer au même poste sans changer les règles du jeu.

Exemple de code

class Rectangle {
  public function setWidth(int $w): void { $this->w = $w; }
  public function setHeight(int $h): void { $this->h = $h; }
  public function area(): int { return $this->w * $this->h; }
}
// Square qui override setWidth/setHeight viole LSP
// car le comportement change de facon inattendue

Cas d'usage

Lors de la conception de hiérarchies d'héritage pour éviter les bugs subtils lies aux sous-classes.

Anti-pattern

Un sous-type qui lance une exception dans une méthode héritée ou change le comportement attendu.
#core#interview#solid

← → au clavier pour passer d'une fiche à l'autre