單例模式概述

2021-10-23 01:49:15 字數 1311 閱讀 6699

先問個問題:

如何保證乙個類只有乙個例項並且這個例項易於被訪問?

(1) 全域性變數:可以確保物件隨時都可以被訪問,但不能防止建立多個物件

(2) 讓類自身負責建立和儲存它的唯一例項,並保證不能建立其他例項,它還提供乙個訪問該例項的方法

單例模式的定義

確保乙個類只有乙個例項,並提供乙個全域性訪問點來訪問這個唯一例項。

要點:

單例模式的結構

單例模式的實現

public class singleton 

//靜態公有工廠方法,返回唯一例項

public static singleton getinstance()

}

餓漢式單例與懶漢式單例餓漢式單例類(eager singleton)結構:實現

public class eagersingleton  

public static eagersingleton getinstance()

}

懶漢式單例類(lazy singleton)結構

實現

public class lazysingleton  

//鎖方法

synchronized public static lazysingleton getinstance()

return instance;

}}

餓漢式單例類與懶漢式單例類的比較餓漢式單例類:無須考慮多個執行緒同時訪問的問題;呼叫速度和反應時間優於懶漢式單例;資源利用效率不及懶漢式單例;系統載入時間可能會比較長

懶漢式單例類:實現了延遲載入;必須處理好多個執行緒同時訪問的問題;需通過雙重檢查鎖定等機制進行控制,將導致系統效能受到一定影響

單例模式優點

單例模式缺點

單例模式適用環境

單例設計模式 概述

設計模式 對問題行之有效的解決方式。其實它是一種思想。1,單例設計模式 單個例項 解決的問題 可以保證乙個類在記憶體中的物件唯一性。例 必須對於多個程式使用同乙個配置資訊物件時,就需要保證該物件的唯一性。如何保證物件唯一性呢?1,不允許其他程式用new建立該類物件。2,在該類中建立乙個本例例項。3,...

單例模式 單例模式

餓漢式 急切例項化 public class eagersingleton 2.宣告靜態成員變數並賦初始值 類初始化的時候靜態變數就被載入,因此叫做餓漢式 public static eagersingleton eagersingleton new eagersingleton 3.對外暴露公共的...

單例 單例模式

簡單的實現乙個單例 instancetype sharedinstance return instance 真正的單例模式 myclass sharedinstance return instance id allocwithzone nszone zone return nil id copywi...