參考:
需要某個類只保留乙個物件,如資料庫連線、網路連線、執行緒池等。
只能有乙個例項
單例類必須建立自己的唯一例項
單列類向其他物件提供這一例項
單例可以繼承與被繼承,方法可以重寫。靜態類不行
單例產生的物件常駐記憶體。靜態類物件執行後會被釋放,被gc清理
單例模式可以延遲載入,靜態類在第一次執行時被初始化。
需要維持特定狀態時使用單例模式,僅用於全域性訪問時使用靜態類。
懶漢模式
餓漢模式:
直接在執行這個類的時候進行一次loading,之後直接訪問
沒有起到lazy 載入的效果
與靜態類相比:只多了乙個記憶體常駐
靜態類內部載入:
靜態內部類不會在單例載入時就載入,達到了類似懶漢模式的效果
執行緒安全
列舉方法:
自由序列化
只有乙個例項
執行緒安全
/** 一、餓漢式
* 1.沒有起到lazy loading的效果
* 2.只比靜態類多個常駐記憶體的作用
* */
class hungrysingleton
public static hungrysingleton gethungrysingleton()
}/***
* 二、懶漢式
*/class lazysingleton
// 考慮執行緒安全,可能多個訪問者訪問時,加鎖
public static synchronized lazysingleton getlazy()
return lazy;
}}/**靜態類內部載入*/
class singletonstaticclass
public singletonstaticclass()
//不會再單例載入時就載入,呼叫該方法時才載入,達到了類似懶漢模式的效果
public static singletonstaticclass getinstance()
}/**列舉方法*/
class resource
enum singletonenum
public resource getinstance()
} public static void main(string args)
設計模式 02 單例模式
1 餓漢模式 宣告靜態物件時,已經初始化。public class singleton public static singleton getinstance 2 懶漢模式 第一次呼叫getinstance時進行初始化。缺點 每次呼叫getinstance都進行同步,造成不必要的同步開銷。publi...
設計模式 02 單例模式
餓漢式 靜態 塊 懶漢式 執行緒不安全 懶漢式 執行緒安全,同步方法 懶漢式 執行緒不安全,同步 塊 雙重檢查 推薦 靜態內部類 推薦 列舉注意事項和細節說明 所謂的單例設計模式,就是採取一定的方法,保證在整個的軟體系統中,對某個類只能存在乙個物件例項,並且該類只提供乙個取得其物件例項的方法 靜態方...
設計模式 02 單例模式
描述 singleton 模式要求乙個類有且僅有乙個例項,並且提供了乙個全域性的訪問點 方式1 sealed class singleton 這種方式不能實現延遲初始化 呼叫時才進行初始化 它在編譯時就初始化出了乙個例項,sealed保證類不能被繼承。方式二 sealed class singlet...