java設計模式 單例模式

2021-08-26 08:29:22 字數 1155 閱讀 2306

1.單例模式概念:單例模式就是乙個類只有乙個例項。

2.單例模式的特點:

(1)單例類只能有乙個例項。

(2)單例類必須自己建立自己的唯一例項。

(3)單例類必須給所有其他物件提供這一例項

3.單例模式的具體實現

(1)餓漢模式

public class singleton

pulic static singleton getinstance()

}(2)懶漢模式

public class singleton

public static singleton getinstance()

}懶漢和餓漢的區別:

a.餓漢模式執行緒安全,懶漢模式在多執行緒會出現執行緒安全問題需要手動實現執行緒安全

b.懶漢模式在執行的時候 獲取物件比較慢,但是載入類的時候比較快,但是餓漢模式是在執行的時候獲取物件較快,

載入類的時候慢。

c.從實現方式來講他們最大的區別就是懶漢式是延時載入

懶漢模式我們怎麼實現執行緒安全呢????

(1)加鎖

public class singleton

public static sychronized singleton getinstance()

}特點:實現了執行緒安全,但是由於synchronized限制了整個getinstance方法,

而我們只是希望在new singleton()時進行加鎖,因此這種寫法會導致效率不高。

(2)改良版

public class singleton

public static sychronized singleton getinstance()

return instance;}}

這就是所謂的雙檢鎖機制,很可惜這種寫法在很多平台和優化編譯器中無法編譯通過

(3)相容版

public class singleton

private static class inner

public static singleton getinstacen()

}由於內部類在編譯完成後也是乙個單獨的class檔案,因此在不使用的情況下inner類是不會被載入的。同時,jvm保證在類載入的過程中static**塊在多執行緒或者單執行緒下都正確執行,且僅執行一次。解決了延遲載入以及執行緒安全的問題。

Java設計模式 單例模式

單例模式 singleton 顧名思義,就是乙個類只有乙個例項。作為物件的建立模式,單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。這個類稱為單例類。顯然單例模式的要點有三個 一是某個類只能有乙個例項 二是它必須自行建立這個例項 三是它必須自行向整個系統提供這個例項。從具體...

java設計模式 單例模式

這個模式是很有意思,而且比較簡單,但是我還是要說因為它使用的是如此的廣泛,如此的有人緣,單例就是單 一 獨苗的意思,那什麼是獨乙份呢?你的思維是獨乙份,除此之外還有什麼不能山寨的呢?我們舉個比較難複製的物件 皇帝中國的歷史上很少出現兩個皇帝並存的時期,是有,但不多,那我們就認為皇帝是個單例模式,在這...

java設計模式 單例模式

單例模式介紹 單例模式分 懶漢式單例 餓漢式單例。單例模式有一下特點 1 單例類只能有乙個例項。2 單例類必須自己自己建立自己的唯一例項。3 單例類必須給所有其他物件提供這一例項。單例模式確保某個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。單例有併發問題,只有乙個例項,多個執行緒就可能同...