Windows Phone開發(fā)之MVVM模式
模式結構
下圖是MVVM模式的結構圖,很簡單的就是將系統(tǒng)拆解成三個類別 (Model、View、ViewModel)。
各個類別的主要職責為:Model負責企業(yè)數(shù)據(jù)邏輯、View負責畫面數(shù)據(jù)邏輯、ViewModel負責執(zhí)行狀態(tài)維持、畫面流程邏輯及企業(yè)流程邏輯。
其中 ViewModel-Model之間,是ViewModel直接使用 Model開放的成員,屬于ViewModel到Model的單向溝通連接。
而 View-ViewModel之間,是透過 Binding技術及Command的設計
模式,將兩者作雙向的溝通連接。
MVVM
模式特征
做為MVC延伸模式的MVVM模式,其***的特征就是,
在View-ViewModel之間,是透過 Binding技術及Command的設計模式,將兩者作雙向的溝通連接。
并且在模型結構設計上,將ViewModel定義為有狀態(tài)的對象模型,由ViewModel負責維持執(zhí)行狀態(tài)。
這樣設計***的好處,是可以將View與ViewModel之間的相依關系,設計為單向相依。
ViewModel做是獨立的個體不相依View,讓View的職責回歸到單純的完成輸入及顯示的工作。
并且方便特定的設計工具設計View的外觀,可以將View的設計交由完全不懂程序設計的人員作處理。
實作分析
1. MVVM模式本身在模型結構設計上,是將ViewModel設計為有狀態(tài)的對象模型。
實作范例的內(nèi)容,將ViewModel架構在有狀態(tài)的應用程序模型上,不做額外的設計。
2. 而 MVVM模式對象之間的生成模式,實作上設計成以View當作主要對象,生成ViewModel及Model,并且將Model注入至ViewModel。
3. 以DDD的觀念去分析Model,可以將Model視為Domain Layer,是整個模式重用的焦點。
這個Domain Layer里面,包含了整個Presentation會使用到的數(shù)據(jù)對象、邊界對象、邏輯對象...等等。
4. 以DDD的觀念去分析ViewModel,可以將ViewModel視為Application Layer。
這個Application Layer封裝View所需要的數(shù)據(jù)、操作及狀態(tài)維持,用來提供給View使用。
經(jīng)過這些分析與設計的種種考慮,可以設計出如下圖的對象圖。