MVC là gì?
Mô hình MVC là gì?
MVC/MVC Design Pattern là từ viết tắt bởi 3 từ Model – View – Controller. Đây là mô hình thiết kế sử dụng trong kỹ thuật phần mềm. Mô hình source code thành 3 phần tương ứng với một hoạt động tách biệt trong một mô hình. Cụ thể là:- Model (M): bộ phận có chức năng lưu trữ toàn bộ dữ liệu của ứng dụng.
- View (V): phần giao diện (theme) dành cho người sử dụng.
- Controller (C): bộ phận có nhiệm vụ xử lý các yêu cầu người dùng đưa đến thông qua view.
- Controller tương tác với qua lại với View
- Controller tương tác qua lại với Model
- Model và View không có sự tương tác với nhau mà nó tương tác với nhau thông qua Controller.
Ưu điểm của MVC:
- Nhẹ, tiết kiệm băng thông: MVC không sử dụng viewstate
- Kiểm tra dễ dàng
- Chức năng Soc (Separation of Concern) cho phép bạn phân tách rõ ràng các phần như Model, giao diện, data, nghiệp vụ.
- Kết cấu tương đối đơn giản.
MVP là gì?
- Được kế thừa từ mô hình MVC, mô hình MVP thay thế Controller bằng Presenter. Mô hình MVP được chia ứng dụng thành 3 phần chính:
- Model: gồm các lớp mô tả business logic, định nghĩa business rules cho dữ liệu.
- View: 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.
- Presenter: như middle-man: 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.
Ưu điểm của MVP:
- Dễ hiểu, dễ dùng nhờ cấu trúc code rõ ràng hơn so với MVC.
- 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.
MVVM là gì?
MVVM là viết tắt của Model – View – ViewModel. Đây là mô hình hỗ trợ two-way data binding (ràng buộc dữ liệu) giữa View và ViewModel. Mô hình cụ thể:- Model: Giống như mô hình MVP và MVC, 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.
Ưu điểm của MVVM:
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: khả năng duy trì bị hạn chế. khó khăn khi kiểm soát và thêm code.Sử dụng MVC, MVP, MVVM khi nào?
- 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ư: WPF, javascript sử dụng Knockout).
- 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 không available (ví dụ như web API).