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。

 


免責聲明!

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



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