MVC, MVP và MVVM là gì? Thông tin cần biết về các mô hình lập trình
Thịnh Văn Hạnh 18/11/2022 1551 Lượt xem Chia sẻ bài viết
MVC, MVP và MVVM là 3 mô hình phổ biến được sử dụng để phát triển một ứng dụng dễ tích hợp, dễ kiểm tra và dễ bảo trì. Nhưng không phải ai cũng hiểu rõ về chúng. Chúng ta sẽ tìm hiểu về ba mô hình MVC, MVP và MVVM. Để có cái nhìn tổng quan về MVC, MVP và MVVM, BKNS xin chia sẻ thông tin về ưu, nhược điểm và khả năng ứng dụng của các mẫu này trong bài viết dưới đây. Hãy cùng nhau tìm hiểu nhé!
Tóm Tắt Bài Viết
MVC là gì?
MVC là gì?
MVC có 3 thành phần gồm: Model – View – Controller
MVC là một mẫu kiến trúc phần mềm khá phổ biến ngày nay. Mô hình này gồm 3 thành phần chính: Model – View – Controller. Mỗi thành phần thực hiện nhiệm vụ riêng của mình và hoạt động độc lập với các thành phần khác. Cụ thể hơn như sau:
+ Model: Đây là thành phần quản lý tất cả các cơ sở dữ liệu của ứng dụng. Mô hình cũng chứa các lớp mô tả logic nghiệp vụ và xác định các quy tắc nghiệp vụ cho dữ liệu (cách dữ liệu được thay đổi và sử dụng).
+ View: Đây là giao diện hiển thị của người dùng. Tại đây người dùng thực hiện các thao tác truy vấn, tìm kiếm,.. dữ liệu. Phần này đại diện cho các phần tử giao diện người dùng (ví dụ: XML, HTML, v.v.). Chế độ xem tương tác với mô hình thông qua mẫu quan sát viên.
+ Controller: Đây là phần chịu trách nhiệm lưu trữ và điều hướng (các) yêu cầu do người dùng thực hiện trong dạng xem. Sau khi nhận được, Recorder xử lý dữ liệu thông qua Model và cuối cùng trả về kết quả và phản hồi cho View.
Cách thức hoạt động của MVC là gì?
3 phần Model – View – Controller của mô hình MVC tương tác với nhau tạo thành một tam giác. Cách thức hoạt động và quy trình của mô hình này có thể dễ hiểu như sau:
+ Đầu tiên, người dùng đặt câu hỏi (user query) thông qua chế độ xem.
Cách thức hoạt động của MVC là gì?
+ Bộ điều khiển xác nhận các yêu cầu này và tiếp tục gửi chúng đến mô hình để xử lý.
+ Sau khi dữ liệu được xử lý.
+ Đầu ghi thông báo cho View.
+ Chế độ xem lấy dữ liệu trực tiếp từ mô hình, dữ liệu này được hiển thị trong giao diện người dùng ở các định dạng trực quan như HTML, XML, JSON, v.v. để người dùng có thể hiểu được.
Như vậy, với mô hình hành động trên, chúng ta có thể thấy rằng bộ điều khiển quyết định cách thức (phương thức) xử lý yêu cầu của người dùng. Model quyết định phương thức xử lý thông tin hiển thị (UI logic) theo view. Công việc của view chỉ là nhận yêu cầu của người dùng và hiển thị dữ liệu cuối cùng.
Ưu điểm của MVC là gì?
Mô hình MVC có nhiều ưu điểm như:
+ Nhẹ, tiết kiệm băng thông: MVC không tốn nhiều dung lượng view nên tiết kiệm băng thông. Việc truyền và nhận dữ liệu diễn ra liên tục. Nhờ vậy website/app chạy ổn định hơn.
+ Có thể dễ dàng kiểm tra và phát hiện lỗi phần mềm.
+ Rất tốt để tách mô hình và xem các bộ phận.
+ Cấu trúc của mô hình đơn giản. Ngay cả khi bạn không quá kỹ thuật, bạn có thể sử dụng nó.
Nhược điểm của MVC là gì?
Bên cạnh những ưu điểm của nó, MVC cũng có một số nhược điểm, chẳng hạn như sau:
+ Thử nghiệm đơn vị rất khó khăn vì Controller và API Android được liên kết chặt chẽ.
+ Controller và View bị ràng buộc. Vì vậy, khi bạn chuyển sang chế độ Xem, bạn phải chuyển sang chế độ Bộ điều khiển.
+ Theo thời gian, việc điều khiển bộ điều khiển trở nên khó khăn khi ngày càng có nhiều mã được viết.
+ MVC chỉ phù hợp với dự án lớn. Đối với các dự án nhỏ, mô hình này là một quá trình truyền dữ liệu khá rắc rối và tốn thời gian.
MVP là gì?
MVP là từ viết tắt của Model – View – Presenter
MVP là gì?
MVP là một mô hình kiến trúc phần mềm tương tự như MVC. MVP có nhiều điểm kế thừa từ MVC, nhưng Controller được thay thế bằng Presenter. Mẫu này bao gồm 3 phần chính bao gồm:
+ Model: Giống như MVC, model chứa các lớp mô tả logic nghiệp vụ và định nghĩa các quy tắc nghiệp vụ cho dữ liệu.
+ View: Thành phần mà người dùng có thể tương tác trực tiếp và gửi yêu cầu tới. Chế độ xem không chứa xử lý logic.
+ Presenter: Phần này nhận đầu vào của người dùng thông qua chế độ xem, xử lý dữ liệu bằng mô hình và cuối cùng trả kết quả về chế độ xem. Presenter và View giao tiếp với nhau thông qua các giao diện.
Cách thức hoạt động của MVP là gì?
Trong mô hình MVP, View là tầng duy nhất tương tác với người dùng (khác với MVC, cả 2 tầng View và Controller đều có thể ghi nhận tương tác). Luồng đi của mô hình này như sau:
View nhận tương tác của người dùng. Sau đó, yêu cầu được truyền đến Presenter và xử lý thông qua Model. Khi Model thực hiện thay đổi, xử lý dữ liệu xong, Presenter lấy dữ liệu từ Model để truyền đến cho View.
Ưu điểm của MVP là gì?
Ưu điểm của MVP là gì?
Những ưu điểm quan trọng của MVP đáng được đề cập:
+ MVP có cấu trúc code rõ ràng hơn MVC nên khá dễ hiểu và dễ sử dụng.
+ Dễ dàng để viết unit test cho Presenter vì nó hoạt động độc lập với ứng dụng xem và không bị ràng buộc với bất kỳ API Android nào.
Nhược điểm của MVP là gì?
Nhược điểm chính của mô hình MVP là theo thời gian, Presenter sẽ tăng dần do business logic phân tán. Nếu Presenter quá lớn, người dùng sẽ khó quản lý và chia nhỏ code.
MVVM là gì?
Trong MVVM, Controller được thay thế bởi View Model
MVVM là gì?
MVVM (Model – View – ViewModel) là mô hình hỗ trợ two-way data binding (ràng buộc dữ liệu) giữa View và ViewModel.
Cấu tạo của MVVM là gì?
Mẫu này bao gồm các thành phần chính sau:
+ Model: Giống như các mẫu MVP và MVC, mẫu MVVM là một phần đại diện cho các lớp logic nghiệp vụ và xác định các quy tắc nghiệp vụ cho dữ liệu.
+ View: Tại đây người dùng có thể tương tác và đưa ra yêu cầu.
+ View model: Đây là lớp trung gian giữa view và model và được coi như là sự thay thế cho controller trong MVC pattern.
Cách thức hoạt động của MVVM là gì?
Trong MVVM, ViewModel là nơi thực hiện hầu hết tất cả logic nghiệp vụ, quản lý các phương thức và các thuộc tính khác để duy trì trạng thái xem. Điều này có nghĩa là Chế độ xem trở thành ánh xạ luôn hiển thị trạng thái của Chế độ xem Mô hình.
Lưu ý rằng trong MVVM, các lớp dưới không biết thông tin của lớp trên. Điều này giúp phân tách rõ ràng giao diện người dùng và logic ứng dụng.
Ưu điểm của MVVM là gì?
Ưu điểm của MVVM là gì?
Ưu điểm chính của MVVM là người dùng có thể dễ dàng kiểm tra đơn vị vì họ không phải phụ thuộc vào View. Khi thử nghiệm, bạn không cần tạo một mô hình như MVP, bạn chỉ cần xác nhận biến quan sát (observable) phù hợp.
Nhược điểm của MVVM là gì?
MVVM có vấn đề về bảo trì. Khi các biến và biểu thức được gán cho View, logic phân tán sẽ phát triển theo thời gian. Điều này dần dần trở nên khó quản lý và thêm vào mã hơn.
Khi nào nên sử dụng mô hình MVC, MVP, MVVM?
Bạn nên sử dụng MVP khi bạn không thể liên kết dữ liệu bằng DataContext (ví dụ: Windows Forms).
Nên sử dụng mẫu MVVM trong trường hợp dữ liệu có thể được liên kết thông qua DataContext (ví dụ: WPF, JavaScript với Knockout).
Và MVC nên được sử dụng khi kết nối giữa View và phần còn lại của ứng dụng không phải lúc nào cũng khả dụng (ví dụ: API Web). Khi đó, bạn không thể sử dụng hiệu quả MVP hay MVVM mà phải chọn mẫu MVC.
Lời kết
Qua bài viết mà BKNS chia sẻ, hy vọng bạn đã hiểu rõ hơn về MVC, MVP và MVVM. Mỗi mô hình đều có ưu, nhược điểm riêng. Tùy vào từng trường hợp cụ thể mà bạn cần cân nhắc để lựa chọn loại mô hình phù hợp nhất.