Composition over Inheritance

Architecture 🟡 Mid

Definition

Favoriser la composition d'objets plutot que l'heritage de classes pour reutiliser du comportement. Plus flexible et moins fragile.

Analogie

Les LEGO : tu assembles des pieces pour creer des formes variees, au lieu de mouler une piece 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'heritage simple ou le diamond problem.

Anti-pattern

Hierarchies d'heritage profondes (5+ niveaux) — fragiles et impossibles a comprendre.

Termes lies

#architecture#interview#principle