理解MVC/MVP/MVVM的區別


 

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

MVC

所有的通信都是單向的。

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

View:視圖:用戶界面--是直接面向最終用戶的“視圖層”,是能與用戶操作交互的界面。

Model:模型:數據保存--是核心的“數據層”,是程序要操作的數據或信息。

Controller:控制器:業務邏輯--負責根據用戶從“視圖層”輸入 的指令,選取“數據層”中的數據,然后對其進行相應操作后,產生最后結果。

 

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

 

 

MVP

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 都采用這種模式。

 


免責聲明!

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



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