官术网_书友最值得收藏!

1.3.3 MVVM模式介紹

MVVM是Model View ViewModel的簡寫,它本質(zhì)上就是MVC模式的改進版,目的是將其中View的狀態(tài)及行為抽象化,將視圖UI和業(yè)務(wù)邏輯分開。ViewModel可以做這些事情,它可以取出Model的數(shù)據(jù),同時幫助處理View中由于需要展示內(nèi)容而涉及的業(yè)務(wù)邏輯。如今越來越多的新技術(shù),例如Silverlight、音頻、視頻、3D、動畫等技術(shù)的發(fā)展導致了軟件UI層更加細節(jié)化、可定制化。同時,在技術(shù)層面,WPF帶來了如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM模式便是由MVP模式與WPF結(jié)合的應(yīng)用方式發(fā)展演變過來的一種新型架構(gòu)模式。它立足于原有MVP模式并把WPF的新特性納入進去,以應(yīng)對客戶日益復雜的需求變化。

1.MVVM模式的優(yōu)點

MVVM模式和MVC模式一樣,主要目的是分離視圖(View)和模型(Model),以下是MVVM模式的優(yōu)點。

(1)低耦合。View可以獨立于Model變化和修改,一個ViewModel可以綁定到不同的View上,當View變化時Model可以不變,當Model變化時View也可以不變。

(2)可重用性。可以將一些視圖邏輯放在一個ViewModel中,讓很多View重用這段視圖邏輯。

(3)獨立開發(fā)。開發(fā)者可以專注于業(yè)務(wù)邏輯和數(shù)據(jù)的開發(fā)(ViewModel),設(shè)計人員可以專注于頁面設(shè)計,使用Expression Blend工具可以很容易地設(shè)計界面并生成XAML代碼。

(4)可測試。界面素來是比較難測試的,而基于MVVM模式,測試可以針對ViewModel來寫。

2.MVVM模式的組成部分

(1)模型:模型是指代表真實狀態(tài)內(nèi)容的領(lǐng)域模型(面向?qū)ο螅蛑复韮?nèi)容的數(shù)據(jù)訪問層(以數(shù)據(jù)為中心)。

(2)視圖:就像在MVC和MVP模式中一樣,視圖是用戶在屏幕上看到的結(jié)構(gòu)、布局和外觀。

(3)視圖模型:視圖模型是暴露公共屬性和命令的視圖抽象。MVVM模式?jīng)]有MVC模式的控制器,也沒有MVP模式的Presenter,有的是一個綁定器。在視圖模型中,綁定器在視圖和數(shù)據(jù)綁定器之間進行通信。

在Microsoft解決方案中,綁定器是一種名為XAML的標記語言。綁定器使開發(fā)者免于被迫編寫樣板式邏輯來同步視圖模型和視圖。聲明性數(shù)據(jù)和命令綁定隱含在MVVM模式中,聲明性數(shù)據(jù)綁定技術(shù)的出現(xiàn)是實現(xiàn)該模式的一個關(guān)鍵因素。

主站蜘蛛池模板: 崇阳县| 梁平县| 唐海县| 西盟| 彝良县| 永春县| 湟中县| 璧山县| 赤峰市| 武威市| 东辽县| 东兰县| 建昌县| 孟津县| 巴青县| 津南区| 仙桃市| 文山县| 乐亭县| 海城市| 韶山市| 雷波县| 辛集市| 博客| 舒城县| 济宁市| 延长县| 大埔县| 龙州县| 宜城市| 剑河县| 新兴县| 怀宁县| 滕州市| 睢宁县| 文水县| 吐鲁番市| 大荔县| 萨迦县| 宁国市| 拉萨市|