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

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

一、MVC(Model-View-Controller)

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

  1. View 傳送指令到 Controller
  2. Controller 完成業務邏輯後,要求 Model 改變狀態
  3. Model 將新的數據發送到 View,用戶得到反饋
    他們都是單向傳遞。
    二、MVP(Model-View-Presenter)

MVP是把MVC中的Controller換成了Presenter(呈現),目的就是爲了完全切斷View跟Model之間的聯繫,由Presenter充當橋樑,做到View-Model之間通信的完全隔離。
這裏寫圖片描述

  1. 各部分之間的通信,都是雙向的。
  2. View 與 Model 不發生聯繫,都通過 Presenter 傳遞。
  3. View 非常薄,不部署任何業務邏輯,稱爲”被動視圖”(Passive View),即沒有任何主動性,而 Presenter非常厚,所有邏輯都部署在那裏。

三、MVVM(Model-View-ViewModel)

如果說MVP是對MVC的進一步改進,那麼MVVM則是思想的完全變革。它是將“數據模型數據雙向綁定”的思想作爲核心,因此在View和Model之間沒有聯繫,通過ViewModel進行交互,而且Model和ViewModel之間的交互是雙向的,因此視圖的數據的變化會同時修改數據源,而數據源數據的變化也會立即反應到View上。
這裏寫圖片描述
這方面典型的應用有.NET的WPF,js框架Knockout、AngularJS等。

唯一的區別是,它採用雙向綁定(data-binding):View的變動,自動反映在 ViewModel,反之亦然。Angular 和 Ember 都採用這種模式。

參考資料:

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章