MVC, MVP, MVVM là gì? Thông tin cần biết về các mô hình lập trình

MVC, MVP và MVVM là 3 mô hình phổ biến được áp dụng để phát triển một ứng dụng dễ kết hợp, dễ kiểm thử và dễ duy trì. Nhưng không phải ai cũng có thể hiểu rõ về chúng. Cùng tìm hiểu về 3 mô hình MVC, MVP và MVVM là gì nhé!

MVC là gì?
MVC là gì?

Để giúp bạn có cái nhìn tổng quan về MVC, MVP và MVVM, chúng tôi xin chia sẻ một vài thông tin liên quan đến ưu, nhược điểm và tính ứng dụng của các mô hình này trong bài viết dưới đây. Hãy cùng tìm hiểu nhé!

MVC, MVP và MVVM – MVC là gì?

mvc mvp mvvm là gì? MVC có 3 thành phần gồm: Model - View - Controller
MVC có 3 thành phần gồm: Model – View – Controller

Mô hình này bao gồm 3 thành phần chính là: Model – View – Controller. MVC là một mô hình kiến trúc phần mềm khá phổ biến hiện nay. Mỗi thành phần sẽ đảm nhận một nhiệm vụ riêng biệt và hoạt động độc lập với các thành phần khác.

Các phần mềm được phát triển dựa vào mô hình MVC:

Laravel là một PHP framework, có mã nguồn mở và miễn phí, được xây dựng nhằm hỗ trợ phát triển các phần mềm, ứng dụng, theo kiến trúc MVC. Hiện nay, Laravel đang là PHP framework phổ biến nhất và tốt nhất. 

Symfony là framework Open Source được xây dựng dựa trên ngôn ngữ lập trình PHP5, giúp phát triển thiết kế website cá nhân. Điểm mạnh của Symfony là gì? Hiện nay, Symfony rất được ưa chuộng nhờ hai ưu điểm lớn, đó là: cộng đồng người dùng, lập trình viên đông đảo và cấu trúc đáng tin cậy, tự do triển khai.

MVC, MVP và MVVM – Các thành phần của MVC là gì?

Cụ thể như sau:

  • Model

Đây là thành phần quản lý toàn bộ các cơ sở dữ liệu (database) của ứng dụng. Đồng thời Model cũng chứa các lớp mô tả business logic và định nghĩa business rules cho dữ liệu (cách mà dữ liệu sẽ được thay đổi và sử dụng).

  • View

View là giao diện hiển thị dành cho người dùng. Đây là nơi mà người sử dụng sẽ thực hiện các thao tác truy vấn, tìm kiếm,.. dữ liệu. Bộ phận này đại diện cho các thành phần UI (ví dụ như: XML, HTML,…). View tương tác với Model thông qua Observer pattern.

  • Controller

Controller là bộ phận có chức năng ghi nhận và điều hướng các yêu cầu (request) mà người dùng đưa ra tại View. Sau khi tiếp nhận, Controller sẽ xử lý các dữ liệu thông qua Model và cuối cùng trả kết quả, phản hồi tại View.

MVC, MVP và MVVM – Cách thức hoạt động của MVC là gì?

3 bộ phận Model – View – Controller của mô hình MVC tương tác qua lại với nhau tạo thành một hình tam giác. Cách thức hoạt động và luồng đi của mô hình này có thể hiểu đơn giản như sau:

  • Đầu tiên, thông qua View, người dùng sẽ đưa ra các yêu cầu (user request).
  • Controller sau đó ghi nhận những yêu cầu này và tiếp tục gửi chúng đến Model để tiến hành xử lý.
  • Khi dữ liệu đã được xử lý xong,
  • Controller sẽ thông báo cho View biết.
  • Và View sẽ trực tiếp lấy dữ liệu từ Model để hiển thị trên giao diện UI với các định dạng trực quan như HTML, XML, JSON,… để người dùng có thể hiểu được.

Như vậy, qua mô hình hoạt động trên, ta có thể thấy phương thức (method) xử lý user request được quyết định bởi Controller. Phương thức xử lý dữ liệu (UI logic) để hiển thị trên View thì được Model quyết định. Còn View thì chỉ có chức năng tiếp nhận yêu cầu người dùng và hiển thị dữ liệu cuối cùng mà thôi.

Ưu điểm của MVC là gì?

Mô hình MVC có rất nhiều ưu điểm, cụ thể như:

  • Nhẹ, tiết kiệm băng thông: MVC không tiêu tốn nhiều viewstate nên rất tiết kiệm băng thông. Các thao tác gửi, nhận dữ liệu được diễn ra liên tục. Vì vậy, website/ứng dụng hoạt động ổn định hơn.
  • Có thể kiểm tra, phát hiện lỗi phần mềm dễ dàng.
  • Rất tốt trong việc phân tách các phần ModelView.
  • Mô hình có kết cấu đơn giản. Dù bạn không quá am hiểu về kỹ thuật cũng có thể sử dụng được.

Nhược điểm của MVC là gì?

Bên cạnh ưu điểm, MVC cũng tồn tại một số nhược điểm sau:

  • Khó thực hiện unit test do ControllerAndroid API có sự liên hệ chặt chẽ với nhau.
  • ControllerView có liên quan với nhau. Do đó, khi thay đổi ở View thì đồng nghĩa bạn sẽ phải thay đổi ở Controller.
  • Theo thời gian, Controller sẽ trở nên khó kiểm soát vì càng ngày càng có nhiều code được viết thêm vào.
  • MVC chỉ thích hợp với các dự án lớn. Với các dự án nhỏ, mô hình này khá cồng kềnh và tốn nhiều thời gian trong việc trung chuyển dữ liệu.

MVC, MVP và MVVM – MVP là gì?

MVC MVVM MVP là gì? MVP là từ viết tắt của Model - View - Presenter
MVP là từ viết tắt của Model – View – Presenter

MVP là một mô hình kiến trúc lập trình gần giống như MVC. MVP có nhiều điểm được kế thừa từ MVC nhưng Controller được thay bằng Presenter. Mô hình này gồm có 3 phần chính, bao gồm:

MVC, MVP và MVVM – Cấu tạo của MVP là gì?

  • Model

Cũng giống như MVC, Model bao gồm các lớp mô tả business logic, định nghĩa business rules cho dữ liệu.

  • View

Là thành phần mà người dùng có thể trực tiếp tương tác, gửi yêu cầu. View không bao gồm bất kỳ hoạt động xử lý logic nào.

  • Presenter

Presenter đóng vai trò như middle-man. Bộ phận này sẽ nhận input của người dùng thông qua View, xử lý dữ liệu với sự giúp sức của Model và cuối cùng trả kết quả lại cho View. Presenter và View giao tiếp với nhau thông qua interface.

MVC, MVP và MVVM – 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 ViewController đề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ì?

Các ưu điểm nổi trội của MVP có thể kể đến như:

  • MVP có cấu trúc code rõ ràng hơn so với MVC nên khá dễ hiểu và dễ dùng.
  • Dễ dàng để viết unit test cho Presenter vì nó 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 của MVP là gì?

Nhược điểm lớn nhất của mô hình MVP là theo thời gian, Presenter sẽ dần lớn lên do bị thêm các business logic rải rác. Người dùng sẽ rất khó để kiểm soát và chia nhỏ code khi Presenter đã quá lớn.

MVC, MVP và MVVM – MVVM là gì?

MVC MVP MVVM là gì? Trong MVVM, Controller được thay thế bởi View Model
Trong MVVM, Controller được thay thế bởi View Model

MVVM (Model – View – ViewModel) là mô hình hỗ trợ two-way data binding (ràng buộc dữ liệu) giữa ViewViewModel.

MVC, MVP và MVVM – Cấu tạo của MVVM là gì?

 Mô hình này bao gồm các thành phần chính sau:

  • Model

Giống như mô hình MVPMVC, Model trong MVVM là bộ phận đại diện cho các tầng business logic, định nghĩa business rules cho dữ liệu.

  • View

Đây là nơi cho phép người dùng tương tác, đưa ra yêu cầu.

  • View Model

Đây là lớp trung gian giữa View và Model và xem như thành phần thay thế cho Controller trong mô hình MVC.

MVC, MVP và MVVM – Cách thức hoạt động của MVVM là gì?

Ở mô hình MVVM, ViewModel là nơi thực hiện hầu hết tất cả các business logic, quản lý methods, properties khác để duy trì viewstate. Điều này đồng nghĩa với việc View trở thành một ánh xạ hiển thị trạng thái của ViewModel tại mọi thời điểm.

Lưu ý, trong MVVM, các tầng bên dưới sẽ không biết được thông tin, dữ liệu của tầng bên trên. Điều này giúp đem đến sự tách biệt rõ ràng giữa giao diện người dùng và ứng dụng logic.

Ưu điểm của MVVM là gì?

Ưu điểm lớn nhất của MVVM là người dùng có thể thực hiện unit testing dễ dàng do không phải phụ thuộc vào View. Khi test, bạn không cần phải tạo mockup như mô hình MVP mà chỉ cần xác nhận biến observable thích hợp.

Nhược điểm của MVVM là gì?

MVVM có nhược điểm về khả năng duy trì. Khi gán biến và biểu thức vào View, các logic rải rác sẽ tăng dần theo thời gian. Điều này khiến việc kiểm soát và thêm code dần trở nên khó khăn hơn.

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

Bạn nên dùng MVVM khi có thể binding dữ liệu thông qua DataContext
Bạn nên dùng MVVM khi có thể binding dữ liệu thông qua DataContext

Lý do cần sử dụng mô hình MVC, MVP và MVVM là gì?

Bạn nên dùng MVP nếu không thể binding dữ liệu qua DataContext (ví dụ như Windows Forms).

Mô hình MVVM thì nên dùng trong trường hợp có thể binding dữ liệu thông qua DataContext (ví dụ như: WPF, javascript sử dụng Knockout).

Còn MVC nên sử dụng khi việc kết nối giữa View và các phần còn lại của ứng dụng không phải lúc nào cùng available (ví dụ như web API). Khi đó, bạn không thể sử dụng MVP hoặc MVVM hiệu quả được và bắt buộc phải chọn mô hình MVC.

Qua bài viết của “Mắt Bão – nhà cung cấp dịch vụ thuê Cloud Server tốt nhất” cung cấp, 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. Chúc bạn thành công!