2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

評(píng)論

0/150

提交評(píng)論