版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.單例模式(單例模式(SingletonPattern)前面說(shuō)提到的五種創(chuàng)建模式,主要解決的問(wèn)題是如何創(chuàng)建對(duì)象,獲得產(chǎn)品。而單例模式最要關(guān)心的則是對(duì)象創(chuàng)建的次數(shù)以及何時(shí)被創(chuàng)建。Singleton模式可以是很簡(jiǎn)單的,它的全部只需要一個(gè)類(lèi)就可以完成(看看這章可憐的UML圖)。但是如果在“對(duì)象創(chuàng)建的次數(shù)以及何時(shí)被創(chuàng)建”這兩點(diǎn)上較真起來(lái),Singleton模式可以相當(dāng)?shù)膹?fù)雜,比頭五種模式加起來(lái)還復(fù)雜,譬如涉及到DCL雙鎖檢測(cè)(doubleche
2、ckedlocking)的討論、涉及到多個(gè)類(lèi)加載器(ClassLoader)協(xié)同時(shí)、涉及到跨JVM(集群、遠(yuǎn)程EJB等)時(shí)、涉及到單例對(duì)象被銷(xiāo)毀后重建等。對(duì)于復(fù)雜的情況,本章中會(huì)涉及到其中一些[1]目的:目的:希望對(duì)象只創(chuàng)建一個(gè)實(shí)例,并且提供一個(gè)全局的訪問(wèn)點(diǎn)。場(chǎng)景:場(chǎng)景:Kerrigan對(duì)于Zerg來(lái)說(shuō)是個(gè)至關(guān)重要的靈魂人物,無(wú)數(shù)的Drone、Zergling、Hydralisk……可以被創(chuàng)造、被犧牲,但是Kerrigan得存在關(guān)系到Z
3、erg在這局游戲中的生存,而且Kerrigan是不允許被多次創(chuàng)造的,必須有且只有一個(gè)蟲(chóng)族刀鋒女王的實(shí)例存在,這不是游戲規(guī)則,但這是個(gè)政治問(wèn)題。分析:分析:如前面一樣,我們還是嘗試使用代碼來(lái)描述訪問(wèn)Kerrigan的過(guò)程,看看下面的UML圖,簡(jiǎn)單得我都不怎么好意思放上來(lái)占版面。圖6.1單例模式的UML圖結(jié)構(gòu)是簡(jiǎn)單的,只是我們還有一些小小的要求如下:1.最基本要求:每次從getInstance()都能返回一個(gè)且唯一的一個(gè)Kerrigan對(duì)象
4、。??returninstance????這個(gè)寫(xiě)法我們把四點(diǎn)需求從上往下檢測(cè),發(fā)現(xiàn)第二點(diǎn)的時(shí)候就出了問(wèn)題,假設(shè)這樣的場(chǎng)景:兩個(gè)線程并發(fā)調(diào)用SingletonKerriganA.getInstance(),假設(shè)線程一先判斷完instance是否為null,既代碼中的lineA進(jìn)入到lineB的位置。剛剛判斷完畢后,JVM將CPU資源切換給線程二,由于線程一還沒(méi)執(zhí)行l(wèi)ineB,所以instance仍然是空的,因此線程二執(zhí)行了newSignl
5、etonKerriganA()操作。片刻之后,線程一被重新喚醒,它執(zhí)行的仍然是newSignletonKerriganA()操作,好了,問(wèn)題來(lái)了,兩個(gè)Kerrigan誰(shuí)是李逵誰(shuí)是李鬼?緊接著,我們做單例模式的第二次嘗試:Java代碼代碼????實(shí)現(xiàn)單例訪問(wèn)Kerrigan的第二次嘗試????publicclassSingletonKerriganB??????單例對(duì)象實(shí)例????privatestaticSingletonKerriga
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 沉重,但別沉滯
- 但以理書(shū)釋義
- 男隊(duì)雖然實(shí)力明顯,但難抹隱憂,日本男隊(duì)雖然落后,但實(shí)
- 但以理書(shū)1
- 但行善事 莫問(wèn)前程
- 離網(wǎng)模式下逆變器接口的控制策略.pdf
- 教學(xué)有法-但教無(wú)定法。
- 微電網(wǎng)并-離網(wǎng)模式切換策略研究.pdf
- “但昭義現(xiàn)象”研究.pdf
- 金納米環(huán)等離激元模式的研究.pdf
- 十離詩(shī)。筆離手
- 山西是農(nóng)業(yè)小省,但農(nóng)業(yè)特色特色資源優(yōu)勢(shì)明顯,但遠(yuǎn)未形成
- 對(duì)外但保管理制度
- 不做女領(lǐng)導(dǎo)但做職場(chǎng)公主
- 十離詩(shī)。馬離廄
- 在蒼茫中傳燈--但斌
- 但昭義暑期赴寧波講學(xué)
- 《聊齋志異》之“但評(píng)”研究.pdf
- 錢(qián)能買(mǎi)到什么但買(mǎi)不到什么
- 金錢(qián)更多了,但生活更沒(méi)興致了
評(píng)論
0/150
提交評(píng)論