Bài viết được dịch từ: https://medium.freecodecamp.org/a-quick-intro-to-dependency-injection-what-it-is-and-when-to-use-it-7578c84fa88f

Giới thiệu

Theo như quan niệm của Wikipedia

Dependency injection là một trong những kinh nghiệm trong các số ấy một object (hoặc một static method) hỗ trợ những dependencies của một object không giống. Một dependency là 1 object mà lại hoàn toàn có thể áp dụng (một service).Tuy nhiên quan niệm trên vẫn hơi là tương đối khó gọi, vậy cho nên hãy thuộc tìm hiểu nhằm làm rõ rộng về nó làm sao.

Bạn đang xem: The mutsun dialect of costanoan based on the vocabulary of de la cuesta

Dependency hay dependent nghĩa là phụ thuộc vào vào cung ứng của một chiếc gì, câu hỏi nào đó. lấy ví dụ như nlỗi giả dụ họ dựa vào không ít vào điện thoại thông minh, thì có thể đọc là chúng ta vẫn dependent lên smartphone.

Trc" khi nói tới dependency injection, hãy gọi coi dependency trong lập trình sẵn tức thị gì trc".

khi cơ mà class A thực hiện một trong những chức năng của class class B, thì nói theo một cách khác là class A tất cả quan hệ tình dục phụ thuộc vào với class B.

*

Trong java, trc" lúc ta hoàn toàn có thể sử dụng method của class không giống, ta phải tạo lập một object của class đấy (tuyệt A cần phải tạo nên 1 thực thể của B).

Vậy ta rất có thể đọc, bài toán chuyển nhượng bàn giao trách nhiệm khởi sinh sản object kia cho một ai khác và trực tiếp thực hiện các dependency này được call là dependency injection.

*

Tại sao họ đề xuất sử dụng dependency injection?

lấy một ví dụ chúng ta gồm một class Car, trong những số đó bao gồm đựng một vài object khác ví như Wheel, Battery...

class Car private Wheels wheel = new MRFWheels(); private Battery battery = new ExcideBattery(); ... ...Ở đây, class Car Chịu đựng trách nát nhiệm khởi sản xuất tất cả các dependency object. Nhưng cthị trấn gì đang xảy ra trường hợp họ ý muốn quăng quật MRFWheel và thay thế sửa chữa bởi YokohamaWheel.

Chúng ta vẫn đề xuất sản xuất một class Car mới cùng với YokohamaWheel, mặc dù Khi áp dụng dependency injection, bạn có thể đổi Wheel sống runtime vì chưng dependency rất có thể đc đẩy vào (inject) ở runtime nuốm do complile time.

Xem thêm: Cách Làm Bột Pizza Giòn Xốp Cơ Bản, Dễ Làm Chuẩn Công Thức, Đế Pizza Cơ Bản

Bạn hoàn toàn có thể đọc là dependency injection là 1 trong fan trung gian Chịu đựng trách nát nhiệm tạo ra các loại wheel không giống nhau, rồi cung cấp bọn chúng mang đến class Car. Việc kia tạo nên class Car ko phải nhờ vào vào Wheel cụ thể làm sao tốt Battery ví dụ như thế nào nữa.

Về cơ bản bao gồm 3 một số loại dependency injection:

Constructor injection: những dependency đc cung ứng thông qua constructor của class.Setter injection: client tạo nên một setter method để các class khác hoàn toàn có thể áp dụng bọn chúng để cấp cho dependency.Interface injection: dependency sẽ cung ứng một hàm injector nhằm inject nó vào bất cứ client nào được truyền vào. Các client buộc phải implement một interface mà lại tất cả một setter method giành cho câu hỏi dấn dependency.

class Car private Wheels wheel; private Battery battery; /*Ở ở đâu đó vào project, ta khởi chế tạo ra số đông objects mà lại được những hiểu biết do 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; ... ...Vậy trách nhiệm của dependency injection là:

Tạo ra các object.Biết được class nào cần những object đấy.Cung cấp đến phần đông class đó hầu hết object bọn chúng nên.

Bằng giải pháp này, nếu sau này object kia gồm sự đổi khác thì dependency injection có trách nhiệm cấp cho lại hầu hết object quan trọng mang lại class.

Lợi ích của dependency injection.

Giúp viết Unit demo dễ ợt hơn.Giảm tgọi được boilerplate code do việc khởi tạo dependency được có tác dụng vày một component khác.Msống dụng dự án công trình dễ dàng hơn.Giúp ích vào bài toán link lỏng (loose coupling) giữa các thành phần nằm trong dự án.

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

Nó khá là phức hợp để học tập, và nếu như cần sử dụng quá trớn thì rất có thể mang đến một số trong những sự việc không giống.Rất các những lỗi sống compile time có thể bị đẩy sang trọng runtime.cũng có thể làm ảnh hưởng cho tới công dụng auto-complete tốt Find references của một trong những IDE

Hy vọng bài viết giúp bạn đọc thêm đc về dependency injection!