MVC MVP và MVVM là gì? So sánh ưu và nhược điểm 3 mô hình

Giữa MVC, MVP và MVVM, mô hình nào là tốt nhất ?

MVC MVP và MVVM là gì? Tại sao phát triển một phần mềm lại cần những mô hình này? Không tốn nhiều thời gian của bạn hơn nữa, chúng ta sẽ tìm hiểu về đặc điểm, ưu và nhược điểm của mỗi mô hình.

MVC là gì?

MVC là viết tắt của Model View Controller – một mô hình thiết kế được sử dụng rộng rãi trong những phần mềm. Ban đầu, mô hình được thiết kế bởi Trygve Reenskaug trong khi ông đang làm việc ở Smalltalk-80 vào năm 1979. Trong thời gian đầu mô hình này được gọi là View Controller Editor. Cho đến 1994, MVC được đưa vào cuốn sách “Design Patterns: Elements of Reusable Object- Oriented Software” và trở nên phổ biến.

Thành phần trong mô hình MVC

Mô hình có 3 thành phần chính:

  • Model (M) – chịu trách nhiệm chính cho các logic nghiệp vụ (business logic) của ứng dụng và quản lý các trạng thái của ứng dụng. Có thể nói rõ chức năng của Model là đọc, ghi dữ liệu trạng thái của ứng dụng một cách liên tục, và có thể xử lý các tác vụ liên quan đến dữ liệu như mạng và xác thực dữ liệu.
  • View (V) – hiển thị dữ liệu và xử lý tương tác
  • Controller (C) – là bộ điều khiển có trách nhiệm tương tác giữa ModelView.

mvc-mvp-va-mvvm-la-giMô hình MVC

Ưu điểm MVC

  • Nhẹ, tiết kiệm tài nguyên.
  • Kết cấu đơn giản.
  • Dễ dàng kiểm tra và phát hiện lỗi.
  • Dễ dàng phân tách các phần Model và View.

Nhược điểm MVC

  • Chỉ phù hợp với các dự án lớn. Đối với các dự án nhỏ mô hình sẽ trở nên cồng kềnh và tốn nhiều thời gian để trung chuyển dữ liệu.
  • Controller sẽ trở nên phức tạp theo thời gian.
  • Controller liên quan với View, vì thế View thay đổi Controller phải thay đổi theo.

MVP là gì?

MVP là viết tắt của Model View Presenter – một mô hình được phát triển dựa trên MVC và tập trung cải thiện các logic trình bày. MVP được phát triển bởi một công ty có tên là Taligent vào khoản thập niên 1990, khi họ đang làm việc trên một mô hình trong môi trường C++ Common Point.

Thành phần trong mô hình MVP

Mặc dù MVP được tăng trưởng dựa trên MVC, tuy nhiên MVP vẫn có điểm độc lạ :

  • Model (M) – gồm các lớp logic nghiệp vụ, xác định các quy tắc nghiệp vụ cho dữ liệu.
  • View (V) – Xem và tạo ra giao diện tương tác với người dùng, và không liên quan đến logic trong quá trình.
  • Presenter (P) – nhận thông tin vào từ View, xử lý dữ liệu với Model và trả lại kết quả lên View khi xong.

mvc-mvp-va-mvvm-la-giMô hình MVP

Ưu điểm MVP

  • Cấu trúc rõ ràng và trực quan hơn MVC.
  • Dễ dàng để viết unit test cho Presenter vì MVP hoạt động độc lập với View và không gắn với bất cứ API nào của Android.

Nhược điểm MVP

  • Mô hình sẽ to dần theo thời gian.
  • Presenter sẽ lớn thêm khi thêm các logic nghiệp vụ. Người dùng sẽ khó kiểm soát và chia nhỏ đoạn code khi Presenter đã quá lớn.

MVVM là gì?

MVVM viết tắt là Model View ViewModel – được phát triển bởi Microsoft và sử dụng cho Windows Presentation Foundation (WPF) và Silverlight. Đến 2005, được John Grossman công bố bằng một bài blog về Avalon (mật mã của Windows Presentation Foundation). Mô hình MVVM phát triển dựa trên cả MVC và MVP, MVVM được phát triển để tách biệt giao diện UI khỏi logic nghiệp vụ và hành vi trong một ứng dụng.

mvc-mvp-va-mvvm-la-giMô hình MVVM trên Android

Thành phần trong mô hình MVVM

  • Model (M) – tương tự như MVC và MVP, Model bao gồm dữ liệu cơ bản để chạy được phần mềm.
  • View (V) – là một giao diện đồ hoạ giữa người dùng và mô hình tương tự MVC. Dùng để hiển thị kết quả sau khi xử lý dữ liệu.
  • View-Model (VM) – Là lớp trung gian của Model và View.

Ưu điểm MVVM

  • Người dùng có thể thực hiện unit testing mà không phụ thuộc vào View.
  • Khi test không cần phải tạo mockup như MVP chỉ cần xác nhận biến observable thích hợp.
  • Sử dụng XAML cho View, vì vậy có thể chỉnh sửa giao diện, không gây ảnh hưởng đến code.
  • Phân rất rõ ràng ba phần, vì vậy sẽ rất dễ dàng lập trình và kiểm tra sửa lỗi code.

Nhược điểm MVVM

  • Khi gán nhiều biến vào View các logic sẽ rải rác tăng dần theo thời gian gây khó khăn cho việc kiểm soát code.
  • Data binding hai chiều gây hao tốn tài nguyên bộ nhớ.

So sánh ba mô hình MVC, MVP và MVVM

Điểm chung của 3 mô hình

Điểm chung của cả 3 mô hình trên là chúng đều có mục đích: tách biệt các chức năng trực quan hoá (Visualization), xử lý (Processing) và quản lý dữ liệu (Data) cho các ứng dụng UI.

mvc-mvp-va-mvvm-la-giĐiểm chung của 3 mô hình

Cả 3 mô hình trên đều nhắm đến tiềm năng :

  • Modularity: khả năng phân chia module.
  • Flexibility: sự nhanh nhẹn trong quá trình xử lý.
  • Testability: khả năng kiểm tra.
  • Maintainability: khả năng bảo trì.

So sánh MVC, MVP và MVVM

Giờ tất cả chúng ta sẽ đi vào so sánh sự độc lạ giữa 3 mô hình trên nhé :

Đánh giá hiệu suất

  • MVP là có độ tin cậy cao nhất và ít trở ngại khi hiển thị hình ảnh.
  • MVVM khi thực hiện các tác vụ phức tạp sẽ phải tải rất nhiều dữ liệu gây ảnh hưởng đến hiệu suất.

Đánh giá mức độ tương thích

  • MVVM có độ tương thích cao nhất do tính liên kết dữ liệu tạo ra tác động tích cực.
  • MVP hoạt động tốt hơn MVC, vì dù gì MVP là mô hình nâng cấp của MVC.

Đánh giá khả năng bảo trì

  • Hai mô hình MVP và MVVM có mức độ ổn định cao hơn và ít cần phải bảo trì hơn, việc bảo trì cũng dễ dàng hơn.
  • Mô hình MVC cần phải thường xuyên thay đổi và cập nhật trong phần lớn trường hợp sử dụng.

References (Tham chiếu)

  • Trong MVC, View không có khả tham chiếu đến Controller.
  • Trong MVP, View có thể tham chiếu đến Presenter.
  • Trong MVVM, View tham chiếu đến View-Model.

Entry Point (điểm nhập)

  • Điểm nhập của MVC là Controller.
  • Điểm nhập của MVP và MVVM là View.

MVC, MVP và MVVM phù hợp sử dụng khi nào?

  • MVC phù hợp khi việc kết nối giữa View và các phần còn lại của ứng dụng phải luôn sẵn có, ví dụ như web API chẳng hạn.
  • MVP phù hợp khi bạn không thể binding dữ liệu qua DataContext, ví dụ như Windows Forms.
  • MVVM phù hợp khi bạn có thể binding dữ liệu thông qua DataContext, ví dụ như: Windows Presentation Foundation, javascript sử dụng Knockout.

Giữa MVC, MVP và MVVM, mô hình nào là tốt nhất?

Rất khó để vấn đáp thắc mắc này, vì câu vấn đáp phụ thuộc vào vào loại ứng dụng, ứng dụng bạn muốn thiết kế xây dựng. MVC sẽ tương thích cho những ứng dụng đơn thuần. MVP và MVVM lại tương thích cho những dự án Bất Động Sản có mức độ phức tạp cao .

Qua bài viết, chắc bạn đã hiểu hơn về ưu và điểm yếu kém của từng mô hình trên. SVN Hosting mong rằng bạn sẽ tìm được một mô hình tương thích cho dự án Bất Động Sản của bạn .

Câu hỏi thường gặp

Windows Presentation Foundation (WPF) là gì?

Windows Presentation Foundation là một hệ thống nền tảng để xây dựng các ứng dụng trên hệ điều hành Window.

Lợi ích đặc biệt khi sử dụng MVVM với ngôn ngữ XAML là gì?

MVVM là mô hình được sinh ra dành riêng cho các ứng dụng sử dụng ngôn ngữ XAML. Những ứng dụng bạn có thể đã biết đến như WPF, Silverlight, Universal Apps, Windows Phone 8.0, Window Phone 8.1,…
Và lợi ích đặt biệt nhất có thể kể đến là việc thiết kế giao diện phần mềm, ứng dụng được tách biệt với việc lập trình.

Data Binding là gì?

Data Binding là một kĩ thuật dùng để tạo link giữa phần giao diện và tài liệu trải qua những logic nhiệm vụ. Nhờ Data Binding, giao diện hoàn toàn có thể tự động hóa update lại khi có sự đổi khác trong tài liệu .

Phát triển một ứng dụng Android tôi nên sử dụng mô hình nào?

Với một ứng dụng Android, với những hiểu biết của người viết gợi ý bạn nên sử dụng mô hình MVP. Vì Android và bộ SDK của Android được thiết kế hướng đến MVC. Tuy nhiên, bạn nên sử dụng MVP – một mô hình nâng cấp tốt hơn của MVC, MVP cho phép bạn dễ dàng duy trì, nâng cấp và sửa lỗi ứng dụng.

Khi nào nên sử dụng mô hình MVC?

MVC là một mô hình đơn thuần, rất thích hợp cho những người ít kinh nghiệm tay nghề. Để bước vào con đường lập trình, thao tác theo nhóm và vận dụng mô hình trong phong cách thiết kế là điều bắt buộc. Nên ở những bước tiên phong, bạn nên chọn mô hình MVC để vận dụng và học hỏi trước .

Mọi vướng mắc cần giải đáp hay mong ước cần tư vấn, vui vẻ để lại thông tin bên dưới. Chuyên viên tư vấn của SVN HOSTING COMPARISON sẽ giúp bạn chọn được giải pháp tốt nhất cho quy trình tăng trưởng công ty bạn .

SVN HOSTING COMPARISON

  • Địa chỉ: 241 Cộng Hòa, Phường 13, Tân Bình, Hồ Chí Minh.
  • Email: [email protected]
  • Hotline: 0973.666.777
  • Website: http://svnhostingcomparison.com