淺談MVC、MVP、MVVM架構模式

參考阮一峯網絡日誌,廖雪峯官方網站,以及部分網絡資料總結

mvc(model-view-controller)

概念解釋:html

MVC是三個單詞的首字母縮寫,它們是Model(模型)、View(視圖)和Controller(控制)
前端

  1. 最上面的一層,是直接面向最終用戶的"視圖層"(View)。它是提供給用戶的操做界面,是程序的外殼。
  2. 最底下的一層,是核心的"數據層"(Model),也就是程序須要操做的數據或信息。
  3. 中間的一層,就是"控制層"(Controller),它負責根據用戶從"視圖層"輸入的指令,選取"數據層"中的數據,而後對其進行相應的操做,產生最終結果。


簡單理解:用戶操做->View(負責接收用戶的輸入操做)->Controller(業務邏輯處理)->Model(數據持久化)->View(將結果反饋給View)程序員

聯繫與做用:這三層是緊密聯繫在一塊兒的,但又是互相獨立的,每一層內部的變化不影響其餘層。每一層都對外提供接口(Interface),供上面一層調用。這樣一來,軟件就能夠實現模塊化,修改外觀或者變動數據都不用修改其餘層,大大方便了維護和升級。web

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。

 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上。
前端框架


MVVM最先由微軟提出來,它借鑑了桌面應用程序的MVC思想,在前端頁面中,把Model用純JavaScript對象表示,View負責顯示,二者作到了最大限度的分離。網絡

把Model和View關聯起來的就是ViewModel。ViewModel負責把Model的數據同步到View顯示出來,還負責把View的修改同步回Model。mvc

MVVM的設計思想:關注Model的變化,讓MVVM框架去自動更新DOM的狀態,從而把開發者從操做DOM的繁瑣步驟中解脫出來!框架

這裏之前端框架VUE舉例說明MVVM,固然還有許多有名的框架都用的是MVVM模式;MVVM的好處就是數據驅動,數據變,則頁面變,這樣就能用簡單的代碼,實現比較複雜的邏輯操做;所以MVVM框架比較適合邏輯複雜的前端項目,好比一些管理系統等。mvvm

結論:從mvc一直髮展到mvvm,使view/model可以徹底分離,是一個解耦的過程,使每一個部分都能更專一於自身的做用,代碼邏輯更清晰,也使開發者的工做更輕鬆。

相關文章
相關標籤/搜索