999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺談WPF設計模式

2009-04-29 00:00:00黃建崗
中小企業管理與科技·上旬刊 2009年10期

摘要:本文主要介紹了軟件UI設計和邏輯設計中的架構模式的發展過程,以及作為微軟新一代客戶端軟件WPF,選擇適合的設計模式來架構開發模型,更容易的實現應用UI的構建。

關鍵詞:WPF WVC WVP WVVM UI

0 引言

在把軟件的Ul設計和邏輯設計分開的開發模式中,以XAML+C#的WPF開發逐漸占據了重要的位置。但是,當Binding與依賴屬性、路由事件和命令不加約束地亂用和過度使用,這種開發一樣會導致軟件架構的不穩固以及招致維護、測試和調試方面的麻煩。那么,怎樣才能用好WPF帶來的結構上的新特性呢?又如何選擇其使用模式?

1 MVC模式

MVC(ModaI View ControIer)本來是存在于Desktop程序中的,M是指數據模型,V是指用戶界面,C則是控制器。使用MVC的目的是將M和V的實現代碼分商,從而使同一個程序可以使用不同的表現形式。

MVC是Xerox PARC在八十年代為編程語言SmaIltaIk—80發明的一種軟件設計模式,至今已被廣泛使用。最近幾年被推薦為Sun公司J2EE平臺的設計模式,并且受到越來越多的使用Cold-Fusion和PHP的開發者的歡迎。MVC框架生成軟件UI和邏輯用的是同一種語言(比如c++/Java/delphi)靈活性基本上是局限在對于同一塊數據(Model爆露出來)使用不同的視圖(View,也就是U1)展現給用戶。

目前,一般高級的界面工具或構造器不支持MVC模式。改造這些工具以適應MVC需要和建立分離的部件的代價是很高的,從而造成使用MVC的困難。

2 MVP模式

MVP是從MVC模式演變而來,它們基本思想有相通之處:ControlIer/Presenter負責邏輯處理,Model提供數據,View負責顯示。而MVP與MVC有著重大區別是:在MVP中View并不直接使用Model,它們之間的通信是通過Presenter(MVC中的ControlIer)來進行的,所有的交互都發生在Presenter內部,而在MVC中View會從Model中直接讀取數據而不是通過Controller。

隨著互聯網的發展,程序不僅僅是運行在特定操作系統上的代碼塊,網絡用戶希望使用相同的程序共享相同的數據。多種操作系統平臺的不統一,造成各廠商程序的運行限制。為了實現程序共享數據,開發人員只好訴諸于所有操作系統平臺的交集——瀏覽器。

程序跑到了瀏覽器里,不需要開發人員重新開發。因為人們發現,無論程序的前端(UI部分)跑在哪里,它的后臺邏輯是不會改變的。于是我們會想怎樣才能把UI和邏輯解耦并對邏輯層加以復用呢?必定需要在設計或者重構的時候考慮這一點才可以。

在MVP模式中,為了讓UI層能夠從邏輯層上分出來,設計師們在U1層與邏輯層之間加了一層interface。

由圖1說明如下幾點:①1View這個interface層幫助我們把各類UI與邏輯層解耦;②傳統的、由winForm/Web Form/MFc等編寫的UI是通過事件(本質是Windows消息)與IView層溝通的;③WPF與IVlew層的溝通,最佳的手段是使用Binding,當然,也可以使用事件;④Presenter層要實現IView,多態機制可以保證運行時UI層顯示恰當的數據。比如Binding,在程序中,你可能看到Binding的Source是某個interface類型的變量——實際上,這個interface變量引用著的對象才是真正的數據源;⑤可有可無的Control,原版的MVP圖里是沒有ContoI的,Control被Presenter取代。

3 MVVM模式

WPF帶來了新的技術體驗,如Sliverlight、音視頻、3D、動畫等,這導致了軟件UI層更加細節化、可定制化。同時,在技術層面,WPF也帶來了諸如Binding、Dependency Prope rty、Routed Events、Command、DataTempiate、ControlTempIate等新特性。我們怎樣才能立足于原有MVP框架、把WPF的新特性揉合進去,以應對客戶復雜的需求呢?

可以說MWM是專為WPF打造的模式,見圖2所示。

View 綁定到VjewModel,然后執行一些命令在向它請求一個動作。而反過來,ViewModel跟Model通訊,告訴它更新來響應UI。這樣便使得為應用構建UI非常的容易。往一個應用程序上貼一個界面越容易,外觀設計師就越容易使用BIend來創建一個漂亮的界面。同時,當UI和功能越來越松耦合的時候,功能的可測試性就越來越強。

無論是UI開發人員還是數據開發人員,都要尊重這個契約、按照它進行設計和開發。這樣,理想狀態下無論是Web UI還是WindOW UI就都可以使用同一套數據邏輯了。

主站蜘蛛池模板: 91色在线观看| 亚洲 欧美 偷自乱 图片| 国产精品精品视频| 精品人妻AV区| 伊人国产无码高清视频| 欧洲一区二区三区无码| 国产精品女同一区三区五区| 国产在线97| 91啦中文字幕| 国产在线视频欧美亚综合| 国产精品一线天| 久久99热66这里只有精品一| 精品国产91爱| 黄色免费在线网址| 中文字幕精品一区二区三区视频 | 国产精品黄色片| 91视频免费观看网站| 免费国产高清视频| 免费看美女自慰的网站| 热久久国产| 欧美精品H在线播放| 无码免费试看| 久久性妇女精品免费| 国产女人在线观看| 国产91特黄特色A级毛片| 欧美a级完整在线观看| 五月丁香在线视频| 免费无码AV片在线观看国产| 亚洲精品大秀视频| 亚洲无线观看| 中国成人在线视频| 国产最新无码专区在线| 国产精品第一区在线观看| 丰满人妻久久中文字幕| 亚洲欧美自拍视频| 草逼视频国产| 亚洲国产中文精品va在线播放| 亚洲有无码中文网| 国产麻豆精品在线观看| 日韩色图在线观看| 国产白丝av| 日韩国产欧美精品在线| 狠狠五月天中文字幕| 欧美成a人片在线观看| 黄色免费在线网址| 五月天香蕉视频国产亚| 国产精品嫩草影院av| 亚洲免费黄色网| 欧美综合区自拍亚洲综合绿色| 亚洲精品欧美重口| 亚洲成人www| 精品伊人久久久大香线蕉欧美 | 亚洲国产精品无码久久一线| 亚洲av成人无码网站在线观看| 亚洲日本一本dvd高清| 欧美亚洲国产一区| 免费一级α片在线观看| 午夜视频www| 超碰91免费人妻| 国产性精品| 欧美精品1区2区| 国产精品无码制服丝袜| 亚洲欧美日韩中文字幕一区二区三区| 91精品人妻互换| 欧美激情视频一区二区三区免费| 日韩人妻少妇一区二区| 国产91成人| 91丨九色丨首页在线播放| a级毛片免费看| 伊人久久久大香线蕉综合直播| 亚洲成在人线av品善网好看| 欧美成人综合在线| 国产精品女熟高潮视频| 国产成人精品亚洲77美色| 亚洲中字无码AV电影在线观看| 久久综合九九亚洲一区| 日韩a级片视频| 婷婷午夜影院| 华人在线亚洲欧美精品| 国产偷国产偷在线高清| 国产在线自揄拍揄视频网站| 99久久国产精品无码|