Giới thiệu

Dagger 2 - là một trong dependency injection framework. Nó được sử dụng để genaration code trải qua các base anotation, code được genartion ra rất giản đơn đọc cùng debug

*

Chuẩn bị

Trước khi bước đầu mình muốn các bạn tìm đọc qua về SOLID principles kia là gần như nguyên lý thi công và viết code. Tiếp đến ở phía trên mình đã chỉ nhấn mạnh nguyên lý ở đầu cuối SOLID đó đó là Dependency Inversion:

Dependency inversion principle

1. Các module v.i.p không nên phụ thuộc vào các modules cung cấp thấp. Cả hai nên nhờ vào vào abstraction.2. Interface (abstraction) ko nên phụ thuộc vào bỏ ra tiết, nhưng ngược lại. ( những class tiếp xúc với nhau trải qua interface, không hẳn thông qua implementation.)Với bí quyết code thông thường, các module v.i.p sẽ gọi những module cung cấp thấp. Module cấp cao sẽ dựa vào và module cung cấp thấp, điều ấy tạo ra các dependency. Khi module thấp cấp thay đổi, module v.i.p phải biến hóa theo. Một đổi khác sẽ kéo theo một loạt thay đổi, giảm khả năng gia hạn của code.Chính do vậy nêú theo đúng Dependendy Inversion principle, các module cùng nhờ vào vào 1 interface không đổi. Ta có thể dễ dàng chũm thế, sửa đổi module cấp thấp mà không ảnh hưởng gì cho tới module cấp cao.

Bạn đang xem: Sử dụng dagger trong các ứng dụng android

Định nghĩa và tư tưởng DI

Hiện nay, các lập trình viên xuất xắc lẫn lộn giữa các khái niệm Dependency Inversion, Inversion of Control (Io
C), Dependency Injection (DI). Tía khái niệm này giống như nhau tuy nhiên không trọn vẹn giống nhau.

*
Sự biệt lập giữa 3 khái niệm trên:

Dependency Inversion: Đây là một nguyên tắc để xây cất và viết code.Inversion of Control: Đây là 1 design pattern được tạo thành để code rất có thể tuân thủ nguyên lý Dependency Inversion. Có rất nhiều cách thực tại pattern này: Service
Locator, Event, Delegate, … Dependency Injection là một trong những cách đó
.Dependency Injection: Đây là một phương pháp để hiện thực Inversion of Control Pattern (Có thể coi nó là 1 trong những design pattern riêng biệt cũng được). Những module phụ thuộc (dependency) sẽ được inject vào module cấp cao.

Có thể phát âm Dependency Injection một cách dễ dàng như sau:

Các module không giao tiếp trực tiếp với nhau, mà thông qua interface. Module cấp thấp sẽ implement interface, module cao cấp sẽ hotline module cấp thấp thông qua interface.

Xem thêm: Danh sách các ngân hàng ở việt nam được đánh giá cao 2023, danh sách ngân hàng tại việt nam

Ví dụ: Để giao tiếp với database, ta bao gồm interface IDatabase, những module thấp cấp là XMLDatabase, SQLDatabase.Module v.i.p là Customer
Business sẽ chỉ sử dụng interface IDatabase.Việc khởi tạo những module cấp thấp sẽ bởi DI Container thực hiện. Ví dụ: trong module Customer
Business, ta sẽ không còn khởi tạo thành IDatabase db = new XMLDatabase(), vấn đề này sẽ vị DI Container thực hiện. Module Customer
Business sẽ không biết gì về module XMLDatabase tốt SQLDatabase.Việc Module nào lắp với interface nào sẽ được config vào code hoặc trong file XML.DI được dùng để triển khai giảm sự nhờ vào giữa những module, thuận tiện hơn vào việc chuyển đổi module, gia hạn code cùng testing.

Dependency Injection with Dagger 2

Dagger 2 là gì ?

Là một dependency injector, khác với những dependency injector giành cho việc tiến hành ứng dụng Enterprise như Spring Io
C xuất xắc Java
EE CDI. Dagger Được thiết kế cho những thiết bị low-end, nhỏ dại gọn nhưng mà vẫn khá đầy đủ tính năng.Hầu hết các dependency injector áp dụng reflection để tạo thành và inject những module. Reflection cấp tốc và phù hợp cho những version app android cũ nhưng mà reflection gây ra khó khăn rất cao trong câu hỏi debug hay tracking khi gặp lỗi.Thay bằng việc thực hiện reflection Dagger thực hiện một trình biên dịch trước (pre-compiler), trình biên dịch này tạo nên tất cả những lớp, các module cần thiết để có tác dụng việc.Dagger ít khỏe khoắn so với những dependency injector không giống nhưng cụ vào kia Dagger lại thanh thanh và dễ dàng sử dụng cũng như gần như loại bỏ đi được nhược điểm của dependency injector là khả năng tracking bug
Dagger 2 thực hiện chủ yếu các anotation sau :

Định nghĩa dependency providers (object providers)

Trong Dagger 2 class bao gồm anotation
Module bao gồm trách nhiệm cung ứng các object có thể được inject.Các class như vậy có thể định nghĩa những phương thức cùng với anotated
Provides. Các đối tượng người dùng trả về từ những phương thức này còn có sẵn dependency nhằm inject.Định nghĩa dependency (object consumers) chúng ta có thể sử dụng
Inject với constructor,Dagger 2 hoàn toàn có thể sử dụng 1 instance này để ngừng dependencies.Điều này được tiến hành để tránh việc define các phương thức
Component được sử dụng trong 1 interface.Interface này được thực hiện bởi Dagger2 nhằm mục tiêu generate code, liên kết giữa module và đối tượng thể hiện sự phụ thuộc. Sau đó là bảng tổng quan phương pháp sử dụnganotate trong dagger :Table 1. Annotation summary of Dagger 2

Annotation
Usage

Component
Used on an interface. This interface is used by Dagger 2 lớn generate code which uses the modules to fulfill the requested dependencies.

Note: Dagger không auto inject những fields. Nó cũng quan yếu inject những private fields, nếu bạn có nhu cầu sử dụng inject field, bạn sẽ define 1 method vào
Component interface trong số ấy lấy instance mà bạn có nhu cầu inject có tác dụng tham số.

Kết luận

Qua bài viết này hi vọng tất cả các bạn có thể hình dung qua tứ tưởng về Dependency injection,để từ đó có cái nhìn mang đến Dagger 2, quý phái bài tiếp theo sau mình đang triển khác công việc để inject dagger vào 1 project nhỏ dại android. Ở nội dung bài viết này bản thân đã cố gắng tham khảo từ khá nhiều nguồn mà lại lượng kiến thức có hạn mong muốn nhận được sự đóng góp góp của những bạn.Cảm ơn mọi bạn !

Bạn vẫn xem: Dagger 2 cho những người mới bắt đầu trên mailinhschool.edu.vn

Bài viết Dagger 2 cho người mới dẫn đầu về chủ đề Hỏi-Đáp đang rất được rất đa số chúng ta quan trung khu đúng ko nào!! lúc này hãy thuộc mailinhschool.edu.vn tò mò về Dagger 2 dành cho người mới tiên phong trong nội dung bài viết hôm nay nhé!

Bạn đã xem chủ thể về: “Dao găm 2 cho những người mới mở màn”

Giới thiệu

Dagger 2 – là 1 phạm vi tiêm phụ thuộc. Nó được áp dụng để sinh sản mã thông qua các chú thích cơ sở, mã được chế tạo dễ đọc với gỡ lỗi.

Sẵn sàng các

Trước lúc mở màn, tôi mong bạn mày mò về các nguyên tắc SOLID, kia là những nguyên tắc kiến thiết và viết mã. Thì ở chỗ này mình chỉ nhấn mạnh vấn đề nguyên tắc sau cuối của SOLID sẽ là Dependency Inversion:

Bạn sẽ xem: dao găm la gi

Nguyên tắc hòn đảo ngược phụ thuộc

1. Hãy nhớ rằng những mô-đun cấp cao ko nên phụ thuộc vào vào những mô-đun cung cấp thấp. Cả nhị nên phụ thuộc vào sự trừu tượng. 2. đồ họa (trừu tượng) nhớ là ko phụ thuộc vào vào cụ thể nhưng nhưng trái lại. (Các lớp tiếp xúc thông qua giao diện, ko bắt buộc triển khai.)

Với mã khoảng thường, các mô-đun cao cấp sẽ gọi các mô-đun cấp cho thấp. Mô-đun cao cấp sẽ dựa vào và mô-đun cấp thấp sẽ làm ra phụ thuộc. Lúc module cấp thấp thay đổi ngay thì module cao cấp cũng phải chuyển đổi ngay. Một biến đổi tức thời sẽ kéo theo hàng loạt đổi khác tức thời, làm sút khả năng bảo trì của mã.Do đó, nếu như khách hàng tuân theo hiệ tượng Đảo ngược phụ thuộc, các mô-đun nhờ vào vào một hình ảnh ko đổi. Bạn có thể dễ dàng cụ thế, sửa đổi những module thấp cấp nhưng mà lại ko ảnh hưởng tác động tới các module cấp cao.

Khái niệm và quan niệm về DI

Hiện nay, những lập trình viên hay nhầm lẫn giữa các khái niệm Dependency Inversion, Inversion of Control (Io
C), Dependency Injection (DI). Cha khái niệm này tương tự nhau nhưng ko trọn vẹn giống nhau.

Nhiều bạn Cũng Thấy Tỷ suất lợi nhuận chuyển động là gì, tri thức chung về các loại tỷ suất lợi nhuận

*

Từ khóa kiếm tìm kiếm cho nội dung bài viết #Dagger #for #newnewners #beginners

Tra cứu vãn thêm dữ liệu, về Dagger 2 cho những người mới đứng đầu tại Wiki
Pedia

Tìm câu chữ về Dao găm 2 cho người mới mở màn từ trang web Wikipedia tiếng Việt.◄

Tham gia đàn tại