Inversion of Control là gì
Đảo ngược điều khiển trong kiến trúc
Inversion of Control (IoC) là một nguyên tắc thiết kế trong đó quyền kiểm soát luồng chương trình được chuyển từ mã ứng dụng sang framework hoặc container bên ngoài.
Các mẫu IoC chính
- Dependency Injection (DI) — tiêm phụ thuộc thông qua constructor, setter hoặc interface
- Service Locator — registry dịch vụ tập trung
- Factory Pattern — tạo đối tượng thông qua factories
- Template Method — định nghĩa khung thuật toán trong lớp cơ sở
Lợi ích của IoC
- Liên kết lỏng giữa các thành phần
- Kiểm thử đơn giản hơn thông qua mocks
- Cấu hình phụ thuộc linh hoạt
- Khả năng tái sử dụng mã
Các IoC Container phổ biến
- Spring (Java) — IoC container phổ biến nhất
- ASP.NET Core DI — DI tích hợp sẵn trong .NET
- InversifyJS — IoC cho TypeScript/JavaScript
- Autofac, Ninject — các giải pháp thay thế cho .NET