Là một mẫu thiết kế giúp giảm bớt sự ràng buộc giữa các thành phần và làm cho mã nguồn trở nên linh hoạt hơn. Có ba loại dependency injection:
- Constructor: ta truyền dependency vào tham số của constructor.
- Property: ta thiết lập dependency là giá trị của các thuộc tính.
- Method: truyền dependency vào tham số của các phương thức.
Ưu điểm:
- Cải thiện khả năng kiểm thử của mã nguồn: chúng ta có thể truyền dependency vào một component để test component đó.
- Mã nguồn linh hoạt hơn: có thể sửa đổi hoặc thay thế các component mà không làm ảnh hưởng đến các phần còn lại của ứng dụng.
Ví dụ constructor injection:
class BookService {
private db: DatabaseConnection; // Database connection object
constructor(db: DatabaseConnection) {
this.db = db;
}
}