java 單例模式的好處

java 單例模式的好處

ID:11492599

大?。?39.50 KB

頁(yè)數(shù):41頁(yè)

時(shí)間:2018-07-12

java 單例模式的好處_第1頁(yè)
java 單例模式的好處_第2頁(yè)
java 單例模式的好處_第3頁(yè)
java 單例模式的好處_第4頁(yè)
java 單例模式的好處_第5頁(yè)
資源描述:

《java 單例模式的好處》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、單例模式是一種常見(jiàn)的設(shè)計(jì)模式,在《Java與模式》一書(shū)中,閻宏博士對(duì)單例模式做了全面的總結(jié)。?JavaSingleton模式就為我們提供了這樣實(shí)現(xiàn)的可能。使用Singleton的好處還在于可以節(jié)省內(nèi)存,因?yàn)樗拗屏藢?shí)例的個(gè)數(shù),有利于Java垃圾回收(garbagecollection)。???單例模式也是一種比較常見(jiàn)的設(shè)計(jì)模式,它到底能帶給我們什么好處呢?其實(shí)無(wú)非是三個(gè)方面的作用:????1、控制資源的使用,通過(guò)線程同步來(lái)控制資源的并發(fā)訪問(wèn);????2、控制實(shí)例產(chǎn)生的數(shù)量,達(dá)到節(jié)約資源的目的。?????3、

2、作為通信媒介使用,也就是數(shù)據(jù)共享,它可以在不建立直接關(guān)聯(lián)的條件下,讓多個(gè)不相關(guān)的兩個(gè)線程或者進(jìn)程之間實(shí)現(xiàn)通信。??單例模式分三種:懶漢式單例、餓漢式單例、登記式單例三種。單例模式有一下特點(diǎn):1、單例類(lèi)只能有一個(gè)實(shí)例。2、單例類(lèi)必須自己創(chuàng)建自己的唯一實(shí)例。3、單例類(lèi)必須給所有其他對(duì)象提供這一實(shí)例。說(shuō)明:一下的代碼來(lái)自閻宏博士的《Java與模式》一書(shū),其中對(duì)一些類(lèi)的寫(xiě)法做調(diào)整(符合Java1.5的習(xí)慣),另外還加了測(cè)試方法。一、懶漢式單例在類(lèi)被加載的時(shí)候,唯一實(shí)例已經(jīng)被創(chuàng)建。這個(gè)設(shè)計(jì)模式在Java中容易實(shí)現(xiàn),在

3、別的語(yǔ)言中難以實(shí)現(xiàn)。/***CreatedbyIntelliJIDEA.*User:leizhimin*Date:2007-9-11*Time:14:57:08*<>單例模式-懶漢式單例*/publicclassLazySingleton{????/**?????*私有靜態(tài)對(duì)象,加載時(shí)候不做初始化?????*/????privatestaticLazySingletonm_intance=null;????/**?????*私有構(gòu)造方法,避免外部創(chuàng)建實(shí)例?????*/????privateLazySingl

4、eton(){????}????/**?????*靜態(tài)工廠方法,返回此類(lèi)的唯一實(shí)例.??????*當(dāng)發(fā)現(xiàn)實(shí)例沒(méi)有初始化的時(shí)候,才初始化.?????*@returnLazySingleton?????*/????synchronizedpublicstaticLazySingletongetInstance(){????????if(m_intance==null){????????????m_intance=newLazySingleton();????????}????????returnm_intanc

5、e;????}}二、餓漢式單例在類(lèi)加載的時(shí)候不創(chuàng)建單例實(shí)例。只有在第一次請(qǐng)求實(shí)例的時(shí)候的時(shí)候創(chuàng)建,并且只在第一次創(chuàng)建后,以后不再創(chuàng)建該類(lèi)的實(shí)例。/***CreatedbyIntelliJIDEA.*User:leizhimin*Date:2007-9-11*Time:14:45:25*<>單例模式-餓漢式單例*/publicclassEagerSingleton{????/**?????*私有的(private)唯一(staticfinal)實(shí)例成員,在類(lèi)加載的時(shí)候就創(chuàng)建好了單例對(duì)象?????*/????p

6、rivatestaticfinalEagerSingletonm_instance=newEagerSingleton();????/**?????*私有構(gòu)造方法,避免外部創(chuàng)建實(shí)例?????*/????privateEagerSingleton(){????}????/**?????*靜態(tài)工廠方法,返回此類(lèi)的唯一實(shí)例.?????*@returnEagerSingleton?????*/????publicstaticEagerSingletongetInstance(){????????returnm_in

7、stance;????}}三、登記式單例這個(gè)單例實(shí)際上維護(hù)的是一組單例類(lèi)的實(shí)例,將這些實(shí)例存放在一個(gè)Map(登記?。┲?,對(duì)于已經(jīng)登記過(guò)的實(shí)例,則從工廠直接返回,對(duì)于沒(méi)有登記的,則先登記,而后返回。/***CreatedbyIntelliJIDEA.*User:leizhimin*Date:2005-9-11*Time:15:20:16*<>單例模式-登記式單例*/publicclassRegSingleton{????/**?????*登記薄,用來(lái)存放所有登記的實(shí)例?????*/????privatesta

8、ticMapm_registry=newHashMap();????//在類(lèi)加載的時(shí)候添加一個(gè)實(shí)例到登記薄????static{????????RegSingletonx=newRegSingleton();????????m_registry.put(x.getClass().getName(),x);????}????/**?????*受保護(hù)的默認(rèn)構(gòu)造方法?????*/????protectedRegSing

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。