1. 程式人生 > >MVC,MVP,MVVM

MVC,MVP,MVVM

route src HA 路由 路由器 控制器 view 數據保存 9.png

MVC

MVC模式的意思是,軟件可以分成三個部分
視圖(View):用戶界面。
控制器(Controller):業務邏輯
模型(Model):數據保存

實際項目往往采用更靈活的方式,以 Backbone.js 為例。
技術分享圖片

  1. 用戶可以向 View 發送指令(DOM 事件),再由 View 直接要求 Model 改變狀態。
  2. 用戶也可以直接向 Controller 發送指令(改變 URL 觸發 hashChange 事件),再由 Controller 發送給 View。
  3. Controller 非常薄,只起到路由的作用,而 View 非常厚,業務邏輯都部署在 View。所以,Backbone 索性取消了 Controller,只保留一個 Router(路由器) 。

MVP

技術分享圖片

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

MVVM

MVVM 模式將 Presenter 改名為 ViewModel,基本上與 MVP 模式完全一致。
技術分享圖片
唯一的區別是,它采用雙向綁定(data-binding):View的變動,自動反映在 ViewModel,反之亦然。Angular 和 Ember 都采用這種模式。

Reference

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

MVC,MVP,MVVM