visual+c#.net的設(shè)計(jì)模式_第1頁(yè)
已閱讀1頁(yè),還剩39頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論