單例模式 Singleton Pattern 學習

2021-09-25 04:24:23 字數 1288 閱讀 9434

/**

* @author feianling

* @date 2019/7/11 簡單單例模式,只適用於單執行緒(不推薦)

*/public

class

singleton

public

static singleton getinstance()

return singleton;

}}

簡單模式在getinstance方法增加synchronized 約束,使得其適用於多執行緒環境。但是由於每次獲取例項都要執行同步鎖的動作,效能低。

public

class

singleton

public

static

synchronized singleton getinstance()

return singleton;

}

由於在方法上加鎖效能相對低下,我們改為將同步鎖放在物件上,這樣我們只有在例項為null時才會試圖加鎖,而不是每次獲取例項都加鎖,這樣效能得到很大的提公升。

public

class

singleton

public

static singleton getinstance()

}}return singleton;

}}

餓漢模式在**初始化之初就建立例項,它的缺點也比較明顯,在一開始就建立例項,系統記憶體的使用率必然有所降低。

public

class

singleton

public

static singleton getinstance()

}

通過定義乙個私有的內部類,在第一次使用這個內部類時會建立例項,singletonhander 為成員內部類,其它人無法呼叫該方法,只有呼叫getinstance方法時才會觸發內部類建立例項,相對於簡化版的餓汗模式,這種方式實現了按需載入,大大提公升了記憶體的使用效率。

public

class

singleton

private

static

class

singletonhander

/** * 獲取例項.

** @return

*/public

static singleton getinstance()

如果你覺得本文對你有所幫助,還請不吝打賞。

單例模式 單例模式

餓漢式 急切例項化 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...

單例模式 懶漢式單例模式

單例模式有餓漢時模式和懶漢式 單例模式也就是說同一類只返回乙個物件供外部類使用 懶漢式即延遲初始化單例。在多執行緒環境下,簡單的懶漢式會有執行緒安全。懶漢式單例模式解決線性安全問題如下 1 使用雙重檢查鎖機制解決執行緒安全問題。2 單例模式還有更好的解決方案,即使用靜態類方式。懶漢式單例模式典型 p...