Inversion of Control (IoC) và Dependency Injection (DI)

1. Khái niệm cơ bản

Inversion of Control (IoC)

Inversion of Control là một nguyên lý thiết kế phần mềm trong đó quyền điều khiển việc tạo và quản lý các đối tượng được chuyển giao từ class sử dụng sang một thành phần bên ngoài (thường là một container hoặc framework).

Thay vì một class tự tạo ra các dependency của nó, IoC container sẽ đảm nhận việc này và "inject" các dependency vào class đó.

Dependency Injection (DI)

Dependency Injection là một kỹ thuật cụ thể để implement IoC. DI cho phép các dependency được "Inject" vào một class từ bên ngoài thay vì class đó phải tự tạo ra chúng.

2. Lợi ích của IoC và DI

3. Các loại Dependency Injection

3.1 Constructor Injection (Inject Constructor)

Dependency được truyền vào thông qua constructor của class.

3.2 Setter Injection (Inject Setter)

Dependency được truyền vào thông qua các method setter.

3.3 Interface Injection (Inject Interface)

Dependency được truyền vào thông qua interface.