Singleton 單例模式

2021-10-24 07:14:16 字數 2089 閱讀 5367

單例模式(singleton)保證乙個類只有乙個例項,並且提供了乙個訪問全域性訪問點。

適用性

結構

效果類別

懶漢式使用時建立例項。

優點:第一次呼叫的時候才初始化,避免記憶體浪費。

缺點:必須加鎖才能保證執行緒安全,加鎖則會影響效能。

餓漢式類載入時就建立例項。

優點:不用加鎖就能保證執行緒安全,執行效率高。

缺點:類載入就初始化,記憶體浪費。

實現懶漢式

1)示例1

public

class

singleton

;public

static singleton getinstance()

return instance;

}}

執行緒不安全,避免使用。

2)示例2

public

class

singleton

;public

static

synchronized singleton getinstance()

return instance;

}}

執行緒同步,執行緒安全,效率低,避免使用。

3)示例3

public

class

singleton

;public

static singleton getinstance()

}return instance;

}}

執行緒不安全,會產生多個例項,不可用

餓漢式1)示例1

public

class

singleton

;public

static singleton getinstance()

}

2)示例2

public

class

singleton

private

singleton()

;public

static singleton getinstance()

}

無線程安全問題,影響系統效率,不推薦

雙重校驗鎖

public

class

singleton

;public

static singleton getinstance()

}}return instance;

}}

雙重校驗鎖,執行緒安全,懶載入,推薦使用

靜態內部類

public

class

singleton

private

singleton()

public

static

final singleton getinstance()

}

靜態內部類,執行緒安全,主動呼叫才示例化,懶載入效率高,推薦使用

列舉

public

enum singleton

;public

static singleton getinstance()

}

列舉型別,無線程安全問題,避免序列化建立新例項,使用少;

注意事項

private object readresolve()

throw objectstreamexception

private

singleton()

}/**

*在類中新增readresolve方法返回單例物件

**/return instance;

}

private

singleton()

}

Singleton 單例 模式

singleton 模式的宗旨在於確保某個類只有乙個例項,別且為之提供乙個全域性訪問點。為了防止其他工作人員例項化我們的類,可以為該類建立唯一乙個構造器,並將構造器的可見 設定為私有。值得注意的是,如果我們建立了其他的非私有的構造器,或者根本沒有為該類提 供構造器,那麼其他人員還是能例項化我們的類。...

Singleton 單例 模式

今天看了,單例模式。感覺他的本質就是,控制類例項的個數。特例就是,控制static變數的唯一性,保證各個程式共享著同一例項。乙個例子 package singleton description 這是乙個單例模式的使用demo author kyle goal 實現乙個類僅有乙個例項 singleto...

單例(Singleton)模式

單例模式的特點 singleton模式包含的角色只有乙個,那就是singleton。singleton擁有乙個私有建構函式,確保使用者無法通過new取得singleton的例項。除此之外,該模式中包含乙個靜態私有成員變數instance與靜態公有方法instance。instance方法負責檢驗並例...