MVC、MVVM、MVP小結


MVC

MVC(Mode View Controller)是一種設計模式,它將應用劃分爲三個部分:
數據(模型)、展示層(視圖)、用戶交互(控制器)。css

一個事件發生的過程:

① 用戶和應用產生交互html

② 控制器的事件處理器被觸發編程

③ 控制器從模型中請求數據,並將其交給視圖設計模式

④ 視圖將數據呈現給用戶mvc

M —— 模型 真正的邏輯處理,存放應用的全部數據對象mvvm

沒必要知道V、C的邏輯,是應用中解耦出來的部分。函數

V —— 視圖 只負責呈現給用戶的頁面的顯示和樣式的展現,html、css、js模板組成工具

除了模板中簡單的條件語句,視圖不該當包含任何其餘邏輯。性能

將邏輯混入視圖是編程大忌,但不是不容許,只要這部分邏輯沒有定義在視圖內便可。將視覺呈現邏輯歸類爲「視圖助手」(helper):和視圖相關的獨立的小工具函數。單元測試

C —— 控制器 是M和V之間的紐帶,進行頁面節點事件的註冊和控制,以及頁面加載性能的實現。

從視圖獲取事件和輸入,進行處理,並更新視圖。頁面加載時,會給視圖添加監聽事件,如監聽表單按鈕點擊、提交。


MVVM

MVVM(Model View ViewModel)耦合性比較鬆,靈活性更強。

M —— 模型 負責業務邏輯和數據的封裝

V —— 視圖 只負責界面和顯示,與顯示邏輯無關

VM —— 視圖模型 負責了全部的顯示邏輯,在模型的基礎上對模型數據進行封裝,並定義了顯示層的邏輯,負責模型與視圖的交互。

一個視圖模型(VM)能夠爲多個視圖(V)服務,視圖層(V)只須要選擇視圖模型(VM)中的屬性、方法並綁定。

優勢:

① 低耦合 view能夠獨立於model變化和修改

② 可重用性 不少view能夠用同一個viewmodel

③ 獨立開發

④ 可測試 能夠針對viewmodel來寫測試,測試界面


MVP

MVP(Model View Presenter)切斷了view和model的聯繫,讓view只和presenter(原controller)交互,減小在需求變化中須要維護對象的數量。

MVP定義了presenter和view之間的接口,讓一些能夠根據已有的接口協議去各自分別獨立開發,以此去解決界面需求變化頻繁的問題。

MVP優勢:

① 模型與視圖徹底分離,能夠修改視圖但不影響模型

② 能夠更高效的使用模型,由於全部的交互都發生在presenter(展現器)內部

③ 能夠將一個presenter用於多個視圖,而不須要改變presenter的邏輯

④ 若是把邏輯放在presenter中,就能夠脫離用戶接口來測試這些邏輯(單元測試)

MVP缺點:

由於對視圖的渲染presenter中,因此視圖和presenter的交互過於頻繁。若是presenter過多的渲染了視圖,每每會使得它與特定的視圖的聯繫過於緊密,「動一發極可能要牽另外一發」。

本文連接:http://www.cnblogs.com/xsilence/p/5998907.html

相關文章
相關標籤/搜索