MVC,MVP,MVVM

MVC

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

實際項目每每採用更靈活的方式,以 Backbone.js 爲例。
ios

  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 都採用這種模式。設計模式

iOS 應用

MVVM就是把以前Controller裏面的代碼邏輯所有移植到了ViewModel裏面,相對於之前而言,控制器也被歸屬於View一類,那麼他和View同樣都會有本身的ViewModel去處理邏輯,並且ViewModel必然擁有Model,這樣的關係使得控制器代碼會減小不少不少,處理起來又多了一個類,自己設計模式裏面有代理,通知,KVO等,不一樣業務對應不一樣的設計模式,我的理解爲了減小控制器的代碼,引進了新的類,那麼類的交互就變得更麻煩了,所以RAC出現了,他幫咱們直接管理了蘋果的那一套數據處理設計模式,統一用它的」信號流」來進行mvc

Reference

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

相關文章
相關標籤/搜索