Áp dụng architecture patterns vào các ứng dụng Android chỉ là việc sớm muộn phải làm. Trên thực tế, Google cũng đã cung cấp Android Architecture Blueprints để hỗ trợ các dev.
Ngoài ra, bạn có thể tham khảo ví dụ MVP & RxJava mà Erik Hellman và chúng tôi đã cùng nhau làm việc tại ĐÂY.
Pattern Model-View-Presenter
Dưới đây là vai trò của mỗi component:
- Model — layer data. Chịu trách nhiệm chính trong việc xử lý business logic và tương tác với network và các layers database
- View — layer UI. Hiển thị dữ liệu ở trên và thông báo Presenter về các actions của user
- Presenter —lấy data từ Model, áp dụng UI logic và quản trị tình trạng của View, quyết định những gì cần hiển thị và react lại các notifications input của user từ View
Vì View và Presenter phối hợp gần gũi với nhau, chúng cần phải tham chiếu đến nhau. Để Presenter unit test được với JUnit, View phải được trừu tượng và 1 interface cho nó sử dụng. Mối quan hệ giữa Presenter và View tương ứng được define trong class interfaceContract
, nhờ đó có thể đọc được code và sự liên kết giữa Presenter và View cũng dễ hiểu hơn.
Model-View-Presenter Pattern & RxJava trong Android Architecture Blueprints
Một ví dụ về app “To Do”.Nó cho phép người dùng tạo, đọc, cập nhật và xóa “To Do” task, cũng như áp dụng các bộ lọc để hiển thị danh sách các task. RxJava được sử dụng để di chuyển Main thread và có thể xử lý các asynchronous operations.
Nguồn Medium dịch bởi tech talk