理解MVC/MVP/MVVM的區別

 

轉載至【http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.htmlhtml

MVCangularjs

全部的通訊都是單向的。mvc

M(Model)V(View)C(Controller)mvvm

View:視圖:用戶界面--是直接面向最終用戶的「視圖層」,是能與用戶操做交互的界面。spa

Model:模型:數據保存--是核心的「數據層」,是程序要操做的數據或信息。雙向綁定

Controller:控制器:業務邏輯--負責根據用戶從「視圖層」輸入 的指令,選取「數據層」中的數據,而後對其進行相應操做後,產生最後結果。htm

 

  • 用戶能夠向 View 發送指令(DOM 事件),再由 View 直接要求 Model 改變狀態。
  • 用戶也能夠直接向 Controller 發送指令(改變 URL 觸發 hashChange 事件),再由 Controller 發送給 View。
  • 用戶也能夠直接向 Controller 發送指令(改變 URL 觸發 hashChange 事件),再由 Controller 發送給 View。

 

 

MVPblog

MVP 模式將 Controller 更名爲 Presenter,同時改變了通訊方向事件

M(Model)V(View)P(Presenter)部署

 

 

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

 

 

 

MVVM

MVVM 模式將 Presenter 更名爲 ViewModel,基本上與 MVP 模式徹底一致。

M(Model)V(View)V(View)M(ViewModel)

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

相關文章
相關標籤/搜索