Dependency injection nghĩa là cung cấp dependency của một object qua tham số thay vì object tự tạo bên trong.
Lợi ích: test dễ hơn (truyền mock dependency), loose coupling, linh hoạt khi đổi implementation.
Ví dụ: thay vì val database = Database.getInstance() bên trong class, hãy truyền vào: class MyClass(val database: Database). Code modular và testable hơn nhiều.