Composition over Inheritance

Architecture 🟡 Mid

Définition

Favoriser la composition d'objets plutôt que l'héritage de classes pour réutiliser du comportement. Plus flexible et moins fragile.

Analogie

Les LEGO : tu assembles des pièces pour créer des formes variées, au lieu de mouler une pièce monolithique par forme.

Exemple de code

// Heritage fragile:
class FlyingSwimmingDuck extends FlyingDuck { swim() {} }
// Composition:
class Duck {
  constructor(private fly: Flyable, private swim: Swimmable) {}
}

Cas d'usage

Combiner des comportements sans les limites de l'héritage simple ou le diamond problem.

Anti-pattern

Hiérarchies d'héritage profondes (5+ niveaux) — fragiles et impossibles a comprendre.
#architecture#interview#principle

En entretien

  1. Pourquoi préférer la composition à l'héritage ?

    Parce que composer des objets pour réutiliser du comportement est plus flexible et moins fragile que l'héritage de classes, un peu comme assembler des LEGO plutôt que mouler une pièce monolithique par forme.

  2. Quel signal indique qu'on a un problème d'héritage ?

    Des hiérarchies d'héritage profondes de 5 niveaux ou plus, devenues fragiles et impossibles à comprendre.

Fiche mise à jour le 2026-09-27

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