單例設計模式的八種方式

2021-10-09 23:20:22 字數 1877 閱讀 7947

//餓漢式(靜態常量)

class

singleton

private

final

static singleton instance =

newsingleton()

;public

static singleton getinstance()

}//優點:類載入的時候就完成例項化,避免了執行緒同步的問題

//不足:沒有懶載入,如果例項沒有用到,會造成記憶體浪費

//餓漢式(靜態**塊)

class

singleton

private

static singleton instance

static

public

static singleton getinstance()

}//優缺點都同第一種模式

//懶漢式(執行緒不安全)

class

singleton

public

static singleton getinstance()

return instance;

}}

//懶漢式(執行緒安全,同步方法)

class

singleton

public

static

synchronized singleton getinstance()

return instance;}}

//不足,每次獲取是咧都要進行同步,效率太低

//懶漢式(執行緒不安全,同步**塊)

class

singleton

public

static singleton getinstance()

}return instance;

}}

//雙重檢查

class

singleton

public

static singleton getinstance()

}}return instance;}}

//優點:延遲載入,效率高

//靜態內部類

class

singleton

private

static

class

singletoninstance

public

static singleton getinstance()

}//避免執行緒不安全,利用靜態內部類特定實現延遲載入,效率高

//列舉

public

static

class

singletonobject

/** * 列舉型別是執行緒安全的,並且只會裝載一次

*/private

enum singleton

private singletonobject getinstance()

}public

static singletonobject getinstance()

}//優點:不僅能避免多執行緒問題,還能防止反序列化重新建立新的物件

//列舉中我們明確了構造方法限制為私有,在我們訪問列舉例項時會執行構造方法,

//同時每個列舉例項都是static final型別的(可反編譯驗證),

//也就表明只能被例項化一次。在呼叫構造方法時,我們的單例被例項化。

//也就是說,因為enum中的例項被保證只會被例項化一次,所以我們的instance也被保證例項化一次

八種單例設計模式

1.靜態常量 2.靜態 塊 1.執行緒安全 2.執行緒不安全 同步方法 3.執行緒不安全 同步 塊 單例設計模式就是在整個系統中或者程式中只有乙個該物件的應用例項。例如 public class single public static single getinstance 2 靜態 塊 步驟 1....

單例模式(八種實現方式)

餓漢單例 優點 簡單 執行緒安全 缺點 浪費記憶體 我們的單例物件數量不可控的時候,可能會造成記憶體浪費 public class hungraysingleton 提供全域性訪問點 public final static hungraysingleton getinstance 餓漢靜態 塊 pu...

23種設計模式 單例模式(共八種)

所謂類的單例模式,就是採取一定的方法,保證在整個軟體系統中,對某個類只能存在乙個物件例項,並且該類只提供乙個獲得其物件例項的方法 靜態方法 當想例項化乙個單例類的時候,必須要使用相應的獲取物件的方法,而不是使用new。單例模式使用場景 需要頻繁的進行建立和銷毀物件 建立物件時耗時過多或耗費資源過多 ...