單例模式(Singleton)的建立

2021-08-09 14:29:57 字數 1597 閱讀 1055

餓漢模式

懶漢模式

序列化

單例模式:乙個類重點內容中帶有乙個例項,該例項通過單例類提供給全域性使用。

建乙個單例模式的類的通用步驟:

建立乙個類

編寫乙個類例項

編寫無參構造器並用private修飾

編寫獲取例項的方法getinstance()

/**

* 餓漢模式

* 例項在類載入的時候就建立

*/

class singleton01 

public

static singleton01 getinstance()

}

/**

* 懶漢模式–執行緒不安全

* 下面**,在多執行緒中存在非執行緒安全

* 假設執行緒一在建立singleton02物件,而 obj = new singleton02();不是乙個原子操作

* 可以分為 jvm根據構造方法在棧區生成對應的物件,然後obj指向該物件的記憶體位址

* 所以可能存在另外乙個執行緒在obj = new singleton02();期間在new乙個物件出來

*/

class singleton02 

public

static singleton02 getinstance()

return obj;

}}

/**

* 懶漢模式--執行緒安全

* 同步方法 可以達到執行緒安全,但是效率會變慢

*/

class singleton03 

public

synchronized

static singleton03 getinstance()

return obj;

}}

/**

* 懶漢模式--執行緒安全-dcl(double check lock)

* 權衡效能和安全

* 並且使用volatile關鍵字修飾obj

* volatile作用:

* 提高被修飾物件在多個執行緒中的可見性

* 禁止指令重新排序

*/class singleton04

public

static singleton04 getinstance()

}return obj;

}}

/**

* 反序列化的單例模式

* 加入readresolve()方法讀取「假」的例項 達到單例的作用

*/

class

singleton05

implements

serializable

public

static singleton05 getinstance()

protected object readresolve() throws objectstreamexception

}

Singleton 單例 模式

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

Singleton 單例 模式

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

單例(Singleton)模式

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