單例模式 Singleton Pattern

2021-10-07 10:32:35 字數 1584 閱讀 9000

小故事:單例是什麼意思呢?大家可以理解為一朝天子一朝臣;在歷史的發展中,乙個朝代只有乙個皇帝,皇帝不死太子就沒辦法繼位,皇帝更換一般都跟隨著元號的改變;在乙個朝代中,每次大臣上朝拜見的都是同乙個皇帝,如果每天見到的皇帝不一樣,肯定會出亂子的,不過想想還是挺赤雞的!廢話不多說,上**:

單例構建方式

1:餓漢式

public

class

singleton01

;public

static singleton01 getinstance()

}

public

class

singleton02

private

singleton02()

;public

static singleton02 getinstance()

}

2:懶漢式

執行緒不安全的實現方式;多執行緒訪問可能會出現多個例項

public

class

singleton03

public

static singleton03 getinstance()

return instance;

}}

執行緒安全的實現方式一:效能較低

public

class

singleton04

public

static

synchronized singleton04 getinstance()

return instance;

}}

雙檢鎖:降低鎖的粒度,可以提公升效能,但是相對餓漢式效能仍然比較低

public

class

singleton05

public

static singleton05 getinstance()

}}return instance;

}}

3:靜態內部類方式

jvm保證單例;

載入外部類時不會載入內部類,這樣可以實現懶載入

public

class

singleton06

private

static

class

singleton06holder

public

static singleton06 getinstance()

}

注意:以上所有方式可以實現單例,但是不能防止反序列化

4:列舉方式

不僅可以解決執行緒同步,還可以防止反序列化;最簡單省事的方法

public

enum singleton07

單例模式 單例模式

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