Composition over inheritance là một nguyên tắc thiết kế được trích dẫn rộng rãi — ưu tiên xây dựng đối tượng bằng cách kết hợp các hành vi (composition) thay vì kế thừa từ các base class (inheritance). Inheritance có những nhược điểm đáng kể mà composition tránh được, mặc dù cả hai đều có chỗ đứng của mình.
Inheritance vs composition
INHERITANCE → một class MỞ RỘNG cái khác, kế thừa hành vi của nó (quan hệ "IS-A"):
class Dog extends Animal
COMPOSITION → một class được XÂY DỰNG TỪ các đối tượng/hành vi khác (quan hệ "HAS-A" / dùng):
class Car { constructor() { this.engine = new Engine(); } } // kết hợp các hành vi
→ composition: kết hợp các mảnh nhỏ hơn; inheritance: dẫn xuất từ một parent
