Hiểu rõ sự khác biệt giữa Tight Coupling và Dependency Injection
Dependency Injection (DI) là một design pattern quan trọng trong lập trình:
{{ badExample }}
{{ goodExample }}
{{ overrideExample }}
Provider Override cho phép thay đổi implementation mà không cần sửa component code:
📝 Hướng dẫn: Nhấn các nút trên và kiểm tra Browser Console (F12 → Console) để xem chi tiết cách DI hoạt động.
Dễ dàng mock dependencies trong unit tests, tăng code coverage và reliability.
Code loose coupling, dễ modify và extend mà không ảnh hưởng các component khác.
Dễ dàng swap implementations cho different environments (dev, test, prod).
Singleton pattern giúp share instances, giảm memory usage và tăng performance.
DI system có hierarchy từ root → module → component, cho phép override ở mỗi level.
Class, Factory, Value, và Existing providers cho flexibility tối đa.
providedIn: 'root' cho phép tree-shaking, chỉ bundle services thực sự được sử dụng.