Mô hình MVP là gì?
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.
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 khi người dùng tương tác được tách ra và đưa vào tầng trình diễn. 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.
M – Model: lớp xử lí dữ liệu. Lớp này sẽ chịu trách nhiệm lấy dữ liệu từ database hoặc network một cách bất đồng bộ. Sau đó sẽ trả về dữ liệu cho Presenter thông qua các hàm callback.
V- View: lớp xử lí view. Lớp này chịu trách nhiệm tìm view (bind view), đưa dữ liệu vào view, animation, kiểm soát các input event của user và gửi cho present các event
P – Presenter: lớp này sẽ là lớp xử lí các bussiness logic. Đây là sẽ lớp trung gian có thể giao tiếp được với hai lớp M & V (chú ý M – V ko giao tiếp trực tiếp với nhau). Khi lớp View nhận một input event sẽ gửi sự kiện xuống lớp P, lớp P lấy sẽ liệu từ lớp Model và gửi lại cho lớp V và hướng dẫn lớp V cách hiển thị.
Cùng So sánh mô hình MVP và MVC xem có điều gì khác biệt:
MVP(Model,view,presenter) | MVC (Model,view,control) |
– Tầng view là tầng duy nhất nhận tương tác.
– Logic xử lý dữ liệu tương tác cũng như xử lý dữ liệu hiển thị được tách ra trong tầng presenter. – Việc kết hợp này giảm thiểu lượng code trong ứng dụng cũng như gộp các logic trong ứng dụng vào một nơi. – Nhưng đối với một ứng dụng liên tục phát triển hay một ứng dụng lớn việc này khiến lượng code trên mỗi logic là rất lớn, các logic chồng chéo lên nhau rất khó cho việc đọc hiểu cũng như việc bảo trì. -Dễ dàng trong việc kiểm thử một cách độc lập. |
-Cả 2 tầng view và control đều có thể tương tác được với người dùng
-Logic xử lý dữ liệu tương tác và xử lý dữ liệu hiển thị được gộp chung vào trong controler. -Việc gộp chung vào một controler sẽ khó kiểm soát lượng code cũng như gây khó khăn trong việc nâng cấp và cập nhật. -Việc kiểm thử ở mô hình này chiếm thời gian cũng như công sức nhiều hơn so với mô hình MVP. |
Các lợi ích của mô hình MVP
- Code rõ ràng rành mạch, các task lớn được chia ra nhiều task nhỏ -> dễ test/debug.
- Phân chia rành mạch giữa các loại xử lí : xử lí dữ liệu / xử lí view / xử lí business logic.
- Phát triển ứng dụng lâu dài, dễ bảo trì và nâng cấp.
Xem ví dụ cụ thể về mô hình MVP
Bình luận đã bị khoá.