版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、※1※VisualC#.的設(shè)計(jì)模式的設(shè)計(jì)模式內(nèi)容提要:“四人幫”(GOF)模式被認(rèn)為是所有其他模式的基礎(chǔ),二十三種設(shè)計(jì)模式分為三類:創(chuàng)建型模式(CreationalPattern)、結(jié)構(gòu)型模式(StructuralPattern)和行為型模式(BehavialPattern)。本文對(duì)其中比較常用的模式進(jìn)行了介紹。關(guān)鍵字:創(chuàng)建型模式、結(jié)構(gòu)型模式、行為型模式引言:設(shè)計(jì)模式(DesignPatterns)是開發(fā)人員在實(shí)際應(yīng)用程序開發(fā)中,對(duì)不斷
2、發(fā)現(xiàn)的軟件設(shè)計(jì)問題的重復(fù)解決方案。設(shè)計(jì)模式是關(guān)于對(duì)象的設(shè)計(jì)和交互,這對(duì)經(jīng)常出現(xiàn)的軟件開發(fā)挑戰(zhàn)的一些完美和重用的解決方案提供了一個(gè)交流平臺(tái)。正文:實(shí)例實(shí)例1Singleton模式模式本實(shí)例演示Sigleton模式的應(yīng)用。【編程要點(diǎn)】【編程要點(diǎn)】Singleton可以說是最簡(jiǎn)單也最實(shí)用的一個(gè)設(shè)計(jì)模式。顧名思義,Singleton就是確保一個(gè)類只有惟一的一個(gè)實(shí)例。Singleton主要用于對(duì)象的創(chuàng)建,這意味著,如果某個(gè)類采用了Singleto
3、n模式,則在這個(gè)類被創(chuàng)建后,它將有且僅有一個(gè)實(shí)例可供訪問。很多時(shí)候都會(huì)需要Singleton模式,最常見的比如整個(gè)應(yīng)用程序中只有一個(gè)連接數(shù)據(jù)庫(kù)的Connection實(shí)例;又比如要求一個(gè)應(yīng)用程序中只存在某個(gè)用戶數(shù)據(jù)結(jié)構(gòu)的惟一實(shí)例,這都可以通過應(yīng)用Singleton模式達(dá)到目的。如此,Singleton似乎有些像全局對(duì)象。但是實(shí)際上,并不能用全局對(duì)象代替Singleton模式,這是因?yàn)椋浩湟唬罅渴褂萌謱?duì)象會(huì)使得程序質(zhì)量降低,而且C#根本
4、就不支持全局變量;其二,全局對(duì)象的方法并不能阻止人們將一個(gè)類實(shí)例化多次。除了類的全局實(shí)例外,開發(fā)人員仍然可以通過類的構(gòu)造函數(shù)創(chuàng)建類的多個(gè)局部實(shí)例。而Singleton模式則通過從根本上控制類的創(chuàng)建,將“保證只有一個(gè)實(shí)例”這個(gè)任務(wù)交給了類本身,開發(fā)人員不可能再有其他途徑得到類的多個(gè)實(shí)例。這一點(diǎn)是全局對(duì)象方法與Singleton模式的根本區(qū)別。Singleton模式的實(shí)現(xiàn)基于兩個(gè)要點(diǎn):(1)不直接用類的構(gòu)造函數(shù),而另外提供一個(gè)public的
5、靜態(tài)方法來(lái)構(gòu)造類的實(shí)例。通常這個(gè)方法取名為Instance。public保證了它的全局可見性,靜態(tài)方法保證了不會(huì)創(chuàng)建出多余的實(shí)例。(2)將類的構(gòu)造函數(shù)設(shè)為private,即將構(gòu)造函數(shù)“隱藏”起來(lái),任何企圖使用構(gòu)造函數(shù)創(chuàng)建實(shí)例的方法都將報(bào)錯(cuò)。這樣就阻止了開發(fā)人員繞過上面的Instance方法直接創(chuàng)建類的實(shí)例。通過以上兩點(diǎn)就可以完全控制類的創(chuàng)建,無(wú)論有多少地方需要用到這個(gè)類,它們?cè)L問的都是類的惟一生成的那個(gè)實(shí)例?!境绦?qū)崿F(xiàn)】【程序?qū)崿F(xiàn)】實(shí)現(xiàn)
6、方式一:usingSystemnamespaceSingletonusingSystemclassSingletonDemo1privatestaticSingletonDemo1theSingleton=nullprivateSingletonDemo1()publicstaticSingletonDemo1Instance()if(null==theSingleton)※3※的Singleton對(duì)象就是設(shè)計(jì)模式Singleton思想
7、在.中的應(yīng)用。那么,如何在.的Remoting中利用Singleton?.提供了兩種方式將一個(gè)遠(yuǎn)程對(duì)象注冊(cè)為Singleton:直接調(diào)用RegisterWellKnownServiceType方法,在參數(shù)中指定對(duì)象類型為Singleton;或在配置文件web.config中設(shè)定遠(yuǎn)程對(duì)象的類型為Singleton。這兩種方法的效果相同,所不同的是后一種方法顯得更加簡(jiǎn)便,因?yàn)楦淖兣渲梦募膬?nèi)容后,不必重新編譯應(yīng)用程序。下列代碼顯示了如何使用
8、RegisterWellKnownServiceType方法注冊(cè)遠(yuǎn)程對(duì)象類型:RemotingConfiguration.RegisterWellKnownServiceType(Type.GetType(“RemotingSamples.HelloServerobject“)“SayHello“WellKnownObjectMode.Singleton)參數(shù)“SayHello”是客戶端訪問遠(yuǎn)程對(duì)象(這里是HelloServer)時(shí)用來(lái)
9、代表遠(yuǎn)程對(duì)象的URI,例如tcp:localhost:8085SayHello(假設(shè)使用的是TCP通道)。最后一個(gè)參數(shù)就指明了這個(gè)遠(yuǎn)程對(duì)象是Singleton類型。一旦將遠(yuǎn)程對(duì)象注冊(cè)為Singleton,則在第一次客戶端調(diào)用HelloServer的方法時(shí)創(chuàng)建這個(gè)遠(yuǎn)程對(duì)象,然后保持它直到客戶端中斷連接或?qū)ο蟪瑫r(shí)被銷毀為止。在此期間,無(wú)論有多少個(gè)客戶端調(diào)用這個(gè)遠(yuǎn)程對(duì)象,所有的客戶請(qǐng)求都將由那個(gè)已經(jīng)存在的惟一實(shí)例接受處理。實(shí)例實(shí)例2簡(jiǎn)單工廠(
10、簡(jiǎn)單工廠(SimpleFacty)模式)模式本實(shí)例演示如何使用簡(jiǎn)單工廠模式編程?!揪幊桃c(diǎn)】【編程要點(diǎn)】簡(jiǎn)單工廠模式根據(jù)提供給它的數(shù)據(jù),返回幾個(gè)可能類中的一個(gè)類的實(shí)例。通常它返回的類都有一個(gè)共同的父類和共同的方法,但每個(gè)方法執(zhí)行的任務(wù)不同,而且根據(jù)不同的數(shù)據(jù)進(jìn)行了優(yōu)化。如圖1所示,該類圖中,X是一個(gè)基類,XY類和XZ類從它派生出來(lái),Xfacty類根據(jù)給出的參數(shù)決定返回哪一個(gè)子類。在右邊定義了一個(gè)getClass方法,傳遞給它某個(gè)值,然后
11、返回X類的某個(gè)實(shí)例。返回哪一個(gè)類的實(shí)例與程序員無(wú)關(guān),因?yàn)檫@些類有同樣的方法,只是實(shí)現(xiàn)不同。返回哪一個(gè)類的實(shí)例完全取決于工廠,工廠功能可能很復(fù)雜,但通常都是相當(dāng)簡(jiǎn)單的。圖1【程序?qū)崿F(xiàn)】【程序?qū)崿F(xiàn)】usingSystemnamespaceSimpleFactyPatternSimpleFactyPattern的摘要說明。publicclassSimpleFactyPattern定義Food接口publicinterfaceFood烹飪voi
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《visual_c--.net程序設(shè)計(jì)教程與上機(jī)指導(dǎo)》課件
- visual c++綜合設(shè)計(jì)題目
- 《visual c--.net程序設(shè)計(jì)教程與上機(jī)指導(dǎo)》第11章數(shù)據(jù)庫(kù)編程
- 外文翻譯---visual c++程序設(shè)計(jì)
- visual c++ 畢業(yè)設(shè)計(jì)外文翻譯
- visual c++程序設(shè)計(jì)外文翻譯
- 外文翻譯---visual c++程序設(shè)計(jì)
- 《visual-c++程序設(shè)計(jì)》課程說課
- visual c# crystal report報(bào)表
- visual_c++課程設(shè)計(jì)報(bào)告--超市管理系統(tǒng)
- visual c++超市管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 基于Visual C++的橋梁荷載試驗(yàn)分析系統(tǒng)設(shè)計(jì).pdf
- visual_c++_6.0_各種排序的算法課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)--基于visual c++實(shí)現(xiàn) 簡(jiǎn)單的通訊薄
- 基于Visual C++的視頻監(jiān)控系統(tǒng)的軟件設(shè)計(jì).pdf
- visual c++ mfc 簡(jiǎn)明教程
- 外文翻譯--準(zhǔn)備將 visual basic 6.0 應(yīng)用程序升級(jí)到 visual basic.net
- visual c# 2010學(xué)習(xí)筆記2
- visual c# 2010學(xué)習(xí)筆記5
- visual studio 2012 c++ 指導(dǎo)教程
評(píng)論
0/150
提交評(píng)論