Logo

Dependency Injection là gì?

avatar

ADMIN

Ngày đăng:

Chia sẻ:

Dependency Injection là gì?

Dependency Injection (DI) là một kỹ thuật thiết kế phần mềm trong lập trình hướng đối tượng, dùng để giảm thiểu sự phụ thuộc giữa các lớp (class) với nhau, giúp code dễ hiểu, dễ bảo trì và nâng cấp hơn.
 

Dependency Injection là gì?

Có 3 loại dependency injection phổ biến:

  1. Constructor injection: các dependency đc cung cấp thông qua constructor của class.
  2. Setter injection: client tạo ra một setter method để các class khác có thể sử dụng chúng để cấp dependency.
  3. Interface injection: dependency sẽ cung cấp một hàm injector để inject nó vào bất kì client nào đc truyền vào. Các client phải implement một interface mà có một setter method dành cho việc nhận dependency.
class Car{
  private Wheels wheel;
  private Battery battery;
  
  /*Ở đâu đó trong project, ta khởi tạo những objects mà đc yêu cầu bởi class này
    Có 2 cách để implement dependency injection
    1. Dựa vào constructor
    2. Dựa vào Setter method
  */
  
  // Dựa vào constructor
  Car(Wheel wh, Battery bt) {
    this.wh = wh;
    this.bt = bt;
  }
  
  // Dựa vào Setter method
  void setWheel(Batter bt){
    this.bt = bt;
  }
  ...  
  ...
}


Lợi ích của dependency injection.

  1. Giúp viết Unit test dễ dàng hơn.
  2. Giảm thiểu đc boilerplate code vì việc khởi tạo dependency đc làm bởi một component khác.
  3. Mở dụng dự án dễ dàng hơn.

Giúp ích trong việc liên kết lỏng (loose coupling) giữa các thành phần trong dự án.


Bất lợi khi dùng dependency injection.

  1. Kỹ thuật phức tạp: Dependency Injection là một kỹ thuật phức tạp. Việc hiểu rõ về cách thức hoạt động và triển khai DI có thể đòi hỏi sự nỗ lực và kiên nhẫn.

  2. Khả năng xảy ra lỗi: Bạn sẽ thường xuyên gặp một số lỗi khi triển khai Dependency Injection, đặc biệt là trong các ứng dụng lớn và phức tạp. Việc xử lý và sửa lỗi trong quá trình sử dụng DI có thể tốn nhiều thời gian và công sức.

  3. Khó hiểu đối với người mới: Người mới bắt đầu làm việc với Dependency Injection có thể gặp khó khăn trong việc hiểu rõ về tư tưởng và cách thức triển khai DI. Điều này đòi hỏi sự hỗ trợ và đào tạo kỹ thuật từ người có kinh nghiệm.

Bình luận

Đăng nhập để thảo luận bài viết này
  • facebook
  • github