MVC與MVVM設計模式理解

MVC設計模式(View和Model之間不能直接通訊)

MVC是一種架構模式,M表示Model,V表示視圖View,C表示控制器Controller:設計模式

  • Model負責存儲、定義、操做數據、從網絡中獲取數據(Struts中Service和Form);
  • View用來展現給用戶,而且和用戶進行交互;
  • Controller是Model和View的協調者,Controller把Model中的數據拿過來給View使用。Controller能夠直接與Model和View進行通訊,而View不能與Controller直接通訊。,當有數據更新時,Model也要與Controller進行通訊,這個時候就要用Notification和KVO,這個方式就像發廣播同樣,Model發信號,Controller設置接收監聽信號,當有數據更新是就發信號給Controller,Model和View不能直接通訊,這樣違背MVC設計原則。View與Controller通訊須要利用代理協議的方式,Controller能夠直接根據Model決定View的展現。View若是接受響應事件則經過delegate,target-action,block等方式告訴Controller的狀態變化。Controller進行業務的處理,而後再控制View的展現。
  • 那這樣Model和View就是相互獨立的。View只負責頁面的展現,Model只是數據的存儲,那麼也就達到了解耦和重用的目的。 

實例解析

UML圖:你們熟悉MVC的調用流程邏輯

 

MVVM是一種設計思想,M表示Model,V表示視圖View,VM表示數據與模型(區別MVC中,C是用於跳轉至哪一個頁面,而VM只是將數據進行轉換或者封裝):網絡

VM:首先要理解binding,能夠參考WPF中的Binding,一個控件與後臺數據模型(VM)進行綁定,後臺數據模型也能夠與M進行交互。VM就是將V->M或M-V的數據進行轉換或者封裝架構

  1.當前臺View發生變化時,View與VM進行了綁定,VM又與M進行交互,從而使M獲得了改變。網站

  2.當M變化時,以C#爲例,M中的DO實現了INotifyChanged,當檢測到變化時,M通知VM,VM與V進行了綁定,而後實現M->V。spa

相關文章
相關標籤/搜索