23種設計模式之單例模式

2021-09-08 13:47:24 字數 1279 閱讀 9544

單例模式:確保乙個類最多只有乙個例項,並提供乙個全域性訪問點

普通單例模式示例(有問題)

public

class

singleton

public

static

singleton getinstance()

return

uniqueinstance;}}

示例singleton

public

class

chocolatefactory

public

static

chocolatefactory getinstance()

return

uniqueinstance;

}public

void

fill()

}public

void

drain()

}public

void

boil() }}

chocolatefactory 單利模式示例

單例模式優化多執行緒問題

使用synchronized同步鎖(懶漢式),如果呼叫同步鎖方法次數比較少,還可行,如果呼叫次數比較多,同步鎖是比較耗效能的

public

class

singleton

public

static

synchronized

singleton getinstance()

return

uniqueinstance;}}

使用synchronized 同步鎖

類載入時初始化(餓漢式),初始化後,如果不用就浪費了

public

class

singleton

public

static

singleton getinstance()

}

類載入就初始化

雙重檢查,加鎖法

public

class

singleton

public

static

singleton getinstance() }}

return

uniqueinstance;}}

在加鎖前後判斷例項是否為空,注意使用了volatile 關鍵字

還有兩種是類靜態塊和列舉,靜態塊跟餓漢式差不多,就是在類的靜態塊例項化物件;列舉用的不多

23種設計模式之單例模式

我們也經常遇到類似的情況,為了節約系統資源,有時需要確保系統中某個類只有唯一乙個例項,當這個唯一例項建立成功之後,我們無法再建立乙個同型別的其他物件,所有的操作都只能基於這個唯一例項。為了確保物件的唯一性,我們可以通過單例模式來實現,這就是單例模式的動機所在。定義 單例模式 singleton pa...

23種設計模式之 單例模式

保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。讓類自身負責儲存它的唯一例項,這個類可以保證沒有其他例項可以被建立,並且它可以提供乙個訪問 獲取 該例項的方法。單例類應滿足以下特點 單例類 singleton 自己例項化自己的唯一例項,並提供訪問該唯一例項的方法。public class s...

23種設計模式之單例模式

單例模式,屬於建立型別的一種常用的軟體設計模式。通過單例模式的方法建立的類在當前程序中只有乙個例項。單例模式是23種設計模式中比較簡單,也是比較重要的一種設計模式。在現在流行的框架中十分常見,比如 mybatis框架。新學期的第一天,小洪早早地來到教室上課,班主任是個美女呢!但是這個班主任很懶,每次...