Композиция вместо наследования — это широко цитируемый принцип проектирования, который предпочитает создание объектов путем комбинирования поведений (композиция) вместо наследования от базовых классов (наследование). Наследование имеет значительные недостатки, которых избегает композиция, хотя оба подхода имеют свое место.
Наследование против композиции
INHERITANCE → a class EXTENDS another, inheriting its behavior ("IS-A" relationship):
class Dog extends Animal
COMPOSITION → a class is BUILT FROM other objects/behaviors ("HAS-A" / uses):
class Car { constructor() { this.engine = new Engine(); } } // composes behaviors
→ composition: combine smaller pieces; inheritance: derive from a parent
