TiiL Tutorials
@TinhocTiiL

Tổ chức dự án Android theo mô hình MVP

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

Có rất nhiều biến thể cũng như phương pháp triển khai MVP, tất cả mọi người có thể điều chỉnh mô hình này tùy theo nhu cầu và cách họ cảm thấy thoải mái hơn. Nhưng tất cả vẫn phải dựa vào các quy tắc chung trên Model – View – Prensenter.
  • 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

  1. Tổ chức dự án với các pakage như hình
  2. Tạo model User  ( lớp User)
  3. 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 )
  4. Tạo các phương thức xử lý dữ liệu trong class LoginPresenter (lớp LoginPresenter)
  5. 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

Avatar
https://khoacntt.ntu.edu.vn/giang-vien/mai-cuong-tho

một GV Đại học. TiiL đã phụ trách một số môn học như: Lập trình Java, Phát triển web với Java, Lập trình thiết bị di động, Lập trình hệ thống nhúng và IoT.

Comments are closed.