Hiểu nhanh về mô hình MVC,MVP và MVVM trong vòng 5 phút



  • MVC , MVP và MVVM là 3 mô hình phổ biến hiện nay dung để phát triển các ứng dụng với tiêu chí 3D ( Dễ kiểm thử - Dễ Kết hợp – Dễ duy trì ) .Khi nghe đến ba mô hình trên có vẻ khá xa lạ với chúng ta , đừng lo lắng ! thông qua bài viết này mình sẽ giới thiệu đến các bạn tương quan về ưu ,nhược điểm và cách vận hành của chúng nhé .

    mvc-mvp-mvvm-la-gi-4.jpg

    1 MVC là gì ?

    MVC (Model View Controller) 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. Mô hình MVC chia ứng dụng thành 3 thành phần chính : Model, View và Controller .

    Model

    Model nghĩa là các dữ liệu cần thiết để hiển thị ở View. Model đại diện cho một tập hợp các lớp mô tả business logic (business model và data model). Nó cũng định nghĩa các business rules cho dữ liệu (nghĩa là cách mà dữ liệu thay đổi và được dùng)

    View

    View đại diện cho các thành phần UI như XML, HTML. View sẽ hiển thị dữ liệu đã qua xử lý từ Controller. Model và View tương tác với nhau qua Observer pattern .

    Controller

    Controller có trách nhiệm xử lý các yêu cầu (request) được gửi đến. Nó sẽ xử lý các dữ liệu của người dùng qua Model và trả về kết quả ở View .

    Mô hình MVC hoạt động như thế nào ?

    mvc-mvp-mvvm-la-gi-1.jpg

    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 .

    Qua mô hình 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 :
    • 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.
    • Kiểm tra, phát hiện lỗi phần mềm dễ dàng.
    • Dễ dàng phân tách các phần Model và View.
    • 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 những ưu điểm trên , MVC còn tồn tại một số nhược điểm sau :
    • Khó thực hiện unit test do Controller và Android API có sự liên hệ chặt chẽ với nhau.
    • Khi thay đổi ở View thì đồng nghĩa bạn sẽ phải thay đổi ở Controller. Do Controller và View có liên quan với nhau .
    • Theo thời gian, Controller sẽ trở nên khó kiểm soát do càng ngày càng có nhiều code được them vào .
    • 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.

    2 Mô hình MVP là gì ?

    Mô hình MVP (Model View Presenter) khá giống mới mô hình MVC ,nhưng thay vì sử dụng Controller, mô hình MVP sử dụng Presenter .

    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.

    Cách thức hoạt động của mô hình MVP

    mvp.jpg

    Khác với mô hình MVC , mô hình MVP chỉ có duy nhất tầng View có thể tương tác với người dùng . Chúng ta sẽ có luồng hoạt động của MVP 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 mô hình MVP là gì ?
    • Cấu trúc code của mô hình MVP rõ ràng hơn mô hình 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 View và không gắn với bất cứ API nào của Android .

    Nhược điểm của mô hình MVP là gì ?

    Cũng giống với Controller của mô hình MVC , Presenter dễ dàng bị thêm các business logic rải rác qua thời gian. Các developers sẽ rất khó để chia nhỏ presenter khi đã quá lớn.

    3 Mô hình MVVM là gì ?

    Mô hình MVVM (Model View View-model) là mô hình hỗ trợ two-way data binding (ràng buộc dữ liệu) giữa View và ViewModel. MVVM được chia làm 3 phần : Model,Vỉew và View-Model .Nói một cách rễ hiểu MVVM hỗ trợ two-way data binding giữa View và View-Model. Điều này cho phép tự động lan truyền sự thay đổi, trong state của View-Model đến View. Tổng quan, View-Model sử dụng mô hình obsever để thông báo sự thay đổi trong View-Model đến Model.

    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
    Phần view là phần 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.

    Cách thức hoạt động của Mô hình MVVM

    500px-MVVMPattern.png

    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.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 mô hình MVVM

    Trong mô hình MVVM , người dung có thể rễ dàng sử dụng unit testing , do mô hình MVVM không phụ thuộc vào phần 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 mô hinh MVVM

    Kiểm soát code khó khăn do khi gán biến vào biểu thức View , các logic rải rác sẽ tăng dần theo thời gian .

    Vậy khi nào nên sử dụng mô hình MVC, MVP , MVVM ?

    • Sử dụng MVP nếu không thể binding dữ liệu qua DataContext (ví dụ như Windows Forms).
    • Sử dụng 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).
    • 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 đó việc sử dụng mô hình MVC sẽ là giải tối ưu nhất .

    Kết luận

    Mô hình MVVMMVP tốt hơn MVC trong việc chia nhỏ ứng dụng thành các component đơn mục đích, các Modular,nhưng hai mô hình trên làm các ứng dụng trở nên phức tạp hơn . Với những ứng dụng đơn giản thì MVC tối ưu hơn . Với mô hình MVVM thì khi code data binding sẽ tối ưu hóa code của bạn hơn .


Log in to reply
 

});