自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

探秘Model-View-ViewModel設(shè)計模式

開發(fā) 后端
這里將簡單介紹一下Model-View-ViewModel設(shè)計模式,希望通過本文能讓大家對Model-View-ViewModel有所了解。
Model-View-ViewModel很多人肯定感覺不太熟悉,這里我們將介紹Model-View-ViewModel與MVC、MVP等模式的不同點,同時還要以DEMO的形式來進行開發(fā)講解。

Model-View-ViewModel和MVC、MVP設(shè)計模式的不同點

Model-View-ViewModel設(shè)計模式是MVP設(shè)計模式與WPF技術(shù)相結(jié)合的產(chǎn)物,對于一些很常見的如Model-View-Controller(MVC)設(shè)計模式和Model-View-Presenter(MVP)設(shè)計模式來說,當(dāng)在WPF下使用時它們都有一個很大的缺點:就是它們根本沒有考慮到WPF強大的數(shù)據(jù)綁定技術(shù)。在這些模式中,Controller或者Presenter對視圖的行為負(fù)責(zé),就像填充TextBox的文本內(nèi)容,加載ListBox,填充表格的內(nèi)容等等。而這些在WPF中都能輕松解決,因為正好WPF最大的優(yōu)點之一就是它豐富的數(shù)據(jù)綁定能力。如果在WPF中使用MVC或者MVP設(shè)計模式,就可能完全無法利用WPF中數(shù)據(jù)綁定的方便性,而Model-View-ViewModel則不一樣。

Model-View-ViewModel的定義

Model-View-ViewModel設(shè)計模式最早是由John Gossman引入的,感興趣的朋友可以看看“http://blogs.msdn.com/johngossman/archive/2005/10/08/478683.aspx”這篇文章。該模型提供了一個純凈的Model,創(chuàng)建了一個抽象的視圖來容納狀態(tài),并且數(shù)據(jù)從一個由可視化設(shè)計器創(chuàng)建的視圖綁定到一個抽象的視圖上。該可視化設(shè)計器主要是Microsoft Expression Blend工具,而這個抽象的視圖則是ViewModel。關(guān)鍵的地方是通過數(shù)據(jù)綁定在View與ViewModel模型之間進行雙向的聯(lián)系。當(dāng)正確地使用該設(shè)計模式后,每一個View除了純凈的XAML和非常少量的后置代碼外不會再包含任何東西,徹底地做到了界面展示和業(yè)務(wù)邏輯的分離,讓程序員更加專注于代碼的編寫。

ViewModel

ViewModel的作用是讓Mdoel更加適合于View。例如你有一個返回了一個泛型集合IList的方法,但你實際上可能還會把它轉(zhuǎn)換到一個對WPF更加友好的類中以更加方便地進行數(shù)據(jù)綁定。通過ViewModel,可以把IList類型的Model集合轉(zhuǎn)換成如CollectionView之類的東西以方便WPF中的UI界面元素進行數(shù)據(jù)綁定,完成這項任務(wù)最關(guān)鍵的地方在于在ViewModel中暴露出一個公共的屬性。和Controlller類似,ViewModel也能用來容納View的狀態(tài)以及執(zhí)行View需要的任何命令。
因為WPF內(nèi)置了Command模式,對于像Button控件之類的UI元素來說都有一個Command的屬性,它是WPF所定義的ICommand類型??梢园堰@些命令放到ViewModel中并以公有屬性的形式暴露出來,這樣就可以讓View對其進行綁定。這極其強大,因為它可以把ModelView中的可執(zhí)行代碼綁定到窗體的Button上。

Demo

以下是使用了Model-View-ViewModel 設(shè)計模式的一個簡單的WPF應(yīng)用程序例子,感興趣的話可以下載代碼看看。后臺使用的是大家常見的Northwnd數(shù)據(jù)庫:

簡單的WPF應(yīng)用程序例子

相關(guān)的類關(guān)系圖如下:

相關(guān)的類關(guān)系圖

原文標(biāo)題:Model-View-ViewModel 設(shè)計模式介紹

鏈接:http://www.cnblogs.com/gyche/archive/2009/09/21/1557307.html

【編輯推薦】

  1. 詳解ASP.NET MVC分頁的實現(xiàn)方法
  2. ASP.NET MVC與WebForm區(qū)別談
  3. ASP.NET MVC應(yīng)用程序執(zhí)行過程分析
  4. ASP.NET MVC分頁控件的實現(xiàn)
  5. 有關(guān)ASP.NET MVC框架的一些基礎(chǔ)知識
責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2014-07-17 10:06:02

Model-View-iOS App

2021-04-27 08:31:10

前端應(yīng)用場景

2013-07-31 13:13:50

Windows PhoMVVM模式

2017-07-20 11:18:22

Vue.jsMVVMMVC

2021-02-01 10:01:58

設(shè)計模式 Java單例模式

2010-04-09 09:28:37

View Model

2024-11-29 08:26:37

2023-11-02 21:11:11

JavaScript設(shè)計模式

2014-08-21 09:31:06

路由

2017-03-02 11:10:39

AndroidMVVM應(yīng)用程序

2013-11-26 16:09:34

Android設(shè)計模式

2020-08-21 07:23:50

工廠模式設(shè)計

2020-10-23 09:40:26

設(shè)計模式

2020-11-03 13:05:18

命令模式

2020-11-04 08:54:54

狀態(tài)模式

2023-04-10 09:20:13

設(shè)計模式訪客模式

2022-01-12 13:33:25

工廠模式設(shè)計

2023-05-04 08:47:31

命令模式抽象接口

2021-04-19 21:25:48

設(shè)計模式到元

2021-05-18 08:52:31

Prototype 原型模式設(shè)計模式
點贊
收藏

51CTO技術(shù)棧公眾號