JAVA設計模式之單例模式_第1頁
JAVA設計模式之單例模式_第2頁
JAVA設計模式之單例模式_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、JAVA設計模式之單例模式JAVA設計模式之單例模式1. 模式介紹模式的定義確保某一個類只有一個實例,而且自行實例化并向整個系統提供 這個實例。模式的使用場景確保某個類有且只有一個對象的場景,例如創建一個對象需要消 耗的資源過多,如要訪問10和數據庫等資源。2. UML類圖角色介紹:(1) Client:高層客戶端。(2) Singleton:單例類。3. 模式的簡單實現publicclassSingletonprivatestaticSingletonintance;priva teSingletonO JpublicstaticSingletongetlnstance () /*一開女臺

2、多線程進來,遇到鎖,一個線程進去,是為空,new對象;后續線 程進入,不為空,不操作;最后直接返回*對象不為空,再有多個線 程進入該函數,不為空,不執行加鎖操作,直接返回*/if (intance=null) synchronized(Singleton, class) if (intanc e=null)intance=newSingleton();returnintance;classSin gletonl /懶漢式 privatestaticSingletonlintance=newSingletonl () ;程序 運行的時候就加載出來了privateSingletonl()publi

3、cstaticSingletonlgetlnstance()re turnintance; classSingleton2 /餓漢式 privatestaticSingleton2intance;privateSingleton2()publics taticSingleton2getInstance() /用到的時候才加載if (intancenull) intance=newSingleton2() ;returnintance; classSingleton3 /餓漢式線程安全privatestaticSingleton3intance;privateSingleton3() publi

4、cs ynchronizedstaticSingleton3getInstance () /用到的時候才加載, 加鎖多線程調用,都有一個加鎖的動作if (intancenull) intance=newSingleton3() ;returnintance; classSingleton4 /餓漢式線程安全privatestaticSingletondintance;privateSingleton4() publics taticSingletondgetInstance() /用到的時候才加載 synchronized(Singletond. class) /加鎖效率跟 3 差不多 if

5、(intancenull) intance=newSingleton4() ;retutnintance;4. 優點與缺點(1)優點:A. 由于單例模式在內存中只有一個實例,減少了內存開支,特別 是一個對象需要頻繁地創建、銷毀時,而且創建或銷毀時性能又無 法優化,單例模式的優勢就非常明顯。B. 由于單例模式只生成一個實例,所以減少了系統的'性能開銷, 當一個對象的產生需要比較多的資源時,如讀取配置、產生其他依 賴對象時,則可以通過在應用啟動時直接產生一個單例對象,然后 用永久駐留內存的方式來解決;C. 單例模式可以避免對資源的多重占用,例如一個寫文件動作, 由于只有一個實例存在內存中,避免對同一個資源文件的同時寫操 作。D. 單例模式可以在系統設置全局的訪問點,優化和共享資

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論