Nguyên lý về Inversion of control (IoC)
Hình bên là Class A
ở hai trường hợp, áp dụng IoC và không. Lớp này
nó làm việc phụ thuộc vào hai lớp Class B
và Class C
(B và C gọi là các dependency)
Ở mô hình không IoC, Class A
khi cần
chủ động tạo ra đối tượng lớp Class B
và Class C
(nó nắm
quyền khởi tạo, điều khiển)
Với mô hình IoC thì class A
không tự khởi tạo cũng không chịu trách nhiệm quản lý Class B
,
Class C
. Nó nhận được hai dependency này từ bên ngoài thông qua một
cơ chế nào đó (như bằng setter, bằng tham số hàm tạo lớp A, bằng gán thuộc
tính ...)
- Service Locator
- Events
- DI (Dependency Inject)
Mô hình Service Locator
Service Locator - Một mô hình triển khai nguyên lý IoC. Sử dụng mô hình này có nghĩa cần có cơ chế sao cho tất các các tiến trình (các đối tượng, dịch vụ ...) được đưa vào quản lý bởi một trung tâm được gọi là Service Locator, từ trung tâm đăng ký (registry) này các lớp muốn sử dụng dịch vụ nào thì Locator sẽ cung cấp (khởi tạo nếu chưa, và trả về dịch vụ cho đối tượng sử dụng).
- Xem chi tiết về Service Locator
- Service Manager một Service Locator trong Zend Framework, xem tại: Service Manager
Mô hình Dependency Inject - DI
Dependency injection (DI) là một mô hình triển khai từ nguyên lý IoC, là một kỹ thuật trong lập trình trong đó một đối tượng cung cấp những phụ thuộc (dependency - là đối tượng, dịch vụ, chức năng) của đối tượng khác. Injection - Bơm vào (tiêm vào) ám chỉ một phụ thuộc (đối tượng, dịch vụ) đưa vào đối tượng để đối tượng sử dụng nó.
- Tìm hiểu về DI - Dependency Injection trong C# với ServiceCollection
- Tìm hiểu về DI - Dependency Injection - trong lập trình PHP