1.1 基本概念
- 在某些特殊場合中,?個類對外提供且只提供?個物件時,這樣的類叫做單例類,?設計單例類的流程和思想叫做單例設計模式,
1.2 實作流程
- 私有化構造方法,使用private關鍵字修飾,
- 宣告本型別別的參考指向本型別別的物件,并使用private static關鍵字共同修飾,
- 提供公有的get方法負責將物件回傳出去,并使用public static關鍵字共同修飾,
1.3 采用餓漢式實作
1.3.1 核心代碼

1.3.2 特點概述
- 保證了多執行緒安全,執行效率比較高,
- 類加載時創建物件,容易產生垃圾物件且浪費記憶體空間,沒有達到延遲加載的效果,
1.4 采用懶漢式實作
1.4.1 核心代碼

1.4.2 特點概述
- 呼叫方法才會創建物件,避免垃圾物件產生和記憶體空間的浪費,達到了延遲加載的效果,
- 需要加鎖才能保證多執行緒安全,加鎖導致執行效率比較低,
1.5 采用雙重鎖校驗實作
1.5.1 核心代碼

1.5.2 特點概述
- 采用雙重鎖機制既能保證多執行緒安全,又能保證執行效率比較高,同時達到了延遲加載的效果,
1.6 采用靜態內部類實作
1.6.1 核心代碼

1.6.2 特點概述
- 只適用于靜態域,不適用于實體域延遲初始化時使用,
- 采用靜態內部類來保證多執行緒安全和執行效率以及延遲加載,比雙重鎖校驗式更加簡單,
1.7 采用列舉實作
1.7.1 核心代碼

1.7.2 特點概述
- 實作單例設計模式的最佳方式,保證多執行緒安全和執行效率,支持序列化機制,絕對防止多次實體的創建,
1.8 實際應用
- Web應用中的配置物件,由于組態檔是共享資源,通常采用單例模式,
- 網站或者App程式的計數器,通常也采用單例模式,便于進行同步,
- 作業系統中的任務管理器和回收站,都是采用的單例模式,

更多精彩歡迎關注微信公眾號《格子衫007》!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/538011.html
標籤:其他
上一篇:1、ArrayList原始碼決議


