Composition over Inheritance
Architecture 🟡 MidDefinition
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.