MVP là một mô hình kiến trúc hướng giao diện người dùng, được thiết kế để tạo thuận lợi cho việc kiểm thử đơn vị (unit testing) và tăng tính tách biệt giữa tầng dữ liệu và tầng hiển thị dữ liệu trong mô hình MVC. Đây là mô hình đang được áp dụng khá nhiều trong ứng dụng Android.
Mô hình MVP cho phép tách tầng trình diễn (Presenter) ra khỏi tầng dữ liệu (Model), vì vậy tương tác với giao diện được tách biệt với cách chúng ta biểu diễn nó trên màn hình (View), hay nói cách khác, tất cả logic sẽ được tách ra và đưa vào tầng trình diễn (Presenter). Thiết kế lý tưởng nhất là với cùng một logic được áp dụng cho nhiều View khác nhau và hoán đổi được cho nhau.
1. Chi tiết mô hình MVP
-
Model: Không có gì khác với các mô hình khác, dùng để mô tả, chứa dữ liệu . Ví dụ ta có model SinhVien, SanPham …
-
View: Thường được implement bởi một Activity , Fragment, View … tùy thuộc vào cấu trúc ứng dụng, View này sẽ chứa một thuộc tính là một lớp Presenter.
-
Presenter: Có trách nhiệm như một cầu nối giữa View và Model. Lấy dữ liệu từ Model, định dạng và trả về cho View. Quyết định những gì sẽ xảy ra khi người dùng tương tác với View, hay nói cách khác nó hàm chứa logic ứng dụng.
2. Ví dụ demo
Demo xử lý màn Đăng nhập (Login) theo mô hình MVP
- Tổ chức dự án với các pakage như hình
- Tạo model User ( lớp User)
- Tạo 1 interface tên là LoginView chứa các phương thức tác động tới giao diện (Lớp LoginView )
- Tạo các phương thức xử lý dữ liệu trong class LoginPresenter (lớp LoginPresenter)
- Bắt các sự kiện và xử lý ở lớp LoginActivity
Tải full mã nguồn dự án tại đây: https://github.com/maicuongtho/SOT397-MobileAppDev/tree/main/loginusingmvp