Dependency injection (DI) là một pattern trong đó một đối tượng nhận các dependency của nó từ bên ngoài (được tiêm vào) thay vì tự tạo chúng. Nó thúc đẩy coupling lỏng, khả năng test, và sự linh hoạt — một pattern cơ bản, được dùng rộng rãi trong phần mềm hiện đại.
Dependency injection là gì
KHÔNG CÓ DI → một class TỰ TẠO các dependency của nó (coupling chặt):
class OrderService { constructor() { this.db = new Database(); } } // dependency hardcode
CÓ DI → các dependency được CUNG CẤP (tiêm) từ bên ngoài:
class OrderService { constructor(db) { this.db = db; } } // db được tiêm vào
→ đối tượng không tạo/kiểm soát các dependency của nó → chúng được trao cho nó
