DAGGER LÀ GÌ

Trong bài viết về kiến trúc MVP trong Android, mình đã từng giới thiệu thư viện Dragger2, một thư viện Dependency Injection mạnh mẽ và hữu ích dành cho phát triển Android. Bài viết này mình sẽ chia sẻ cách sử dụng Dagger 2 trong Android, rất rất cơ bản để các bạn mới cũng có thể hiểu và áp dụng được.Bạn đang xem: Dagger là gì

Trước đây khi mình mới học lập trình, mình cũng bắt đầu tìm hiểu về quy tắc viết clean code SOLID. Thực sự nó làm mình tẩu hỏa nhập ma với hàng loạt khái niệm như: Dependency Injection, Provider, Component, Module, Scope

Do vậy, mình đã tự hứa với bản thân rằng khi nào mình đã hiểu rõ về quy tắc này thì lập tức phải làm ngay một bài viết để chia sẻ lại cho mọi người (cũng vừa giúp mình ghi nhớ lại).

Bạn đang xem: Dagger là gì

Và đây là một phần trong kế hoạch đó, một bài viết về Dagger 2, một thư viện hỗ trợ bạn thực hiện nguyên tắc Dependency Injection( một phần trong triết lý SOLID).

Note: Bài viết tìm hiểu Dagger này chỉ dành cho các bạn mới học lập trình thôi nhé! Hay những ai đang bắt đầu tiếp cận với nguyên tắc viết code clean SOLID. Những khái niệm, cách tiếp cận trong bài viết này rất cơ bản, những kiến thức tối thiểu cần phải biết để trở thành developer chuyên nghiệp. Mình xin lỗi các bậc tiền bối nếu có múa rìu qua mắt thợ nhé!
*

Tìm hiểu dagger Dagger 2 trong Android

Nội dung chính của bài viết

Tìm hiểu Dagger 2 trong Android#Xây dựng MagicBox

Tìm hiểu Dagger 2 trong Android

#Khởi tạo dự án Android

Trước khi bạn bắt đầu đọc bài viết này, bạn đã biết đến các khái niệm như Function, Class và Member Variables rồi đúng không?

Và bạn cũng biết cách tạo một dự án trong Android Studio rồi chứ? Thậm chí Android Studio bây giờ còn hỗ trợ tạo dự án với những tính năng cơ bản mà bạn không cần phải nhúng tay code.

Tuy nhiên, để tiện theo dõi, chúng ta sẽ tạo một dự án với một Empty Activity. Sau đó thêm một TextView.

Và đây là code của MainActivity:

Nếu chúng ta khởi tạo Info trong MainActivity sẽ làm cho code không được clean. Việc kế thừa code sẽ trở nên khó khăn hơn.

Xem thêm: Pubg Là Gì? Cách Chơi Pubg Mobile: Hướng Dẫn Cơ Bản Về Các Loại Súng Thông Dụng

Do đó, thay vì chúng ta tạo một class Info trong MainActivity. Mình muốn thông tin ( và các biến thành viên khác nữa) được tạo ở một nơi khác.

Bạn có biết hành động này gọi là gì không? Đó chính là Dependencies Injection.


*

Lúc này code của chúng ta thay vì khỏi tạo và định nghĩa Info bên trong MainActivity. Chúng ta sẽ truyền Info vào.

class MainActivity(val info:Info) : AppCompatActivity()Ồ! Có gì đó sai sai trong đoạn code trên. Dường như Android không cho phép truyền tham số vào MainActivity. Vậy phải làm sao đây?

Nếu bạn có kinh nghiệm lập trình Android thì bạn sẽ nghĩ đến class Application. Chúng ta sẽ truyền tham số cho MainActivity từ class Application. Tuy nhiên, ở đây chúng ta không làm thế, chúng ta sẽ sử dụng Dagger2.