淺談MVC、MVP、MVVM架構模式的區別和聯系


MVC、MVP、MVVM這些模式是為了解決開發過程中的實際問題而提出來的,目前作為主流的幾種架構模式而被廣泛使用。

一、MVC(Model-View-Controller)

MVC是比較直觀的架構模式,用戶操作->View(負責接收用戶的輸入操作)->Controller(業務邏輯處理)->Model(數據持久化)->View(將結果反饋給View)。

MVC使用非常廣泛,比如JavaEE中的SSH框架(Struts/Spring/Hibernate),Struts(View, STL)-Spring(Controller, Ioc、Spring MVC)-Hibernate(Model, ORM)以及ASP.NET中的ASP.NET MVC框架,xxx.cshtml-xxxcontroller-xxxmodel。(實際上后端開發過程中是v-c-m-c-v,v和m並沒有關系,下圖僅代表經典的mvc模型)

二、MVP(Model-View-Presenter)

MVP是把MVC中的Controller換成了Presenter(呈現),目的就是為了完全切斷View跟Model之間的聯系,由Presenter充當橋梁,做到View-Model之間通信的完全隔離。

.NET程序員熟知的ASP.NET webform、winform基於事件驅動的開發技術就是使用的MVP模式。控件組成的頁面充當View,實體數據庫操作充當Model,而View和Model之間的控件數據綁定操作則屬於Presenter。控件事件的處理可以通過自定義的IView接口實現,而View和IView都將對Presenter負責。

 

三、MVVM(Model-View-ViewModel)

如果說MVP是對MVC的進一步改進,那么MVVM則是思想的完全變革。它是將“數據模型數據雙向綁定”的思想作為核心,因此在View和Model之間沒有聯系,通過ViewModel進行交互,而且Model和ViewModel之間的交互是雙向的,因此視圖的數據的變化會同時修改數據源,而數據源數據的變化也會立即反應到View上。

這方面典型的應用有.NET的WPF,js框架Knockout、AngularJS等。

參考資料:

http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM