走進單例模式

2021-10-02 03:08:56 字數 1415 閱讀 8530

設計模式 design pattern 是軟體開發人員在軟體開發過程中面臨的一般問題的解決方案。這些解決方案是眾多軟體開發人員經過相當長的一段 時間的試驗和錯誤總結出來的。

單例模式 singleton : 是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中,應用該模式的類乙個類只有乙個例項。即乙個類只有乙個物件例項。

構造方法私有化

宣告乙個本類物件

給外部提供乙個靜態方法獲取物件例項

public

class

singleton1

private

static singleton1 s =

newsingleton1()

;public

static singleton1 getinstance()

//測試方法

public

void

print()

}

在類被載入後,物件被建立,到程式結束後釋放

public

class

singleton2

private

static singleton2 s;

public

static singleton2 getinstance()

return s;

}//測試方法

public

void

print()

}

在第一次呼叫getinstance方法時,物件被建立, 到程式結束後釋放

細微區別

餓漢式懶漢式

占用記憶體時間長,提高效率

占用記憶體時間短,效率低

思考題:能不能使用構造方法私有化+靜態方法來替代單例?

高階1

public

class

singleton

// 靜態方法返回該例項,加synchronized關鍵字實現同步

public

static synchronized singleton getinstance()

return instance;

}}

高階2

運用雙檢查鎖機制(dcl:double checked locking)如下:

public

class

singleton

// 靜態方法返回該例項

public

static singleton getinstance()

}}return instance;

}}

這是較為完美的單例設計模式實現

單例模式 單例模式

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