一、定義
確保某乙個類只有乙個例項,而且自行例項化,並且向整個系統提供這個例項。
二、優點
減少了記憶體的開支,減少系統的效能開銷,避免了對於資源的多重占用,優化其資源訪問。
三、缺點
擴充套件困難,對於測試不利。
四、注意
單例設計模式模式對於使用於系統資源小號過多的操作中,例如io或者連線資料庫。
五、**例項
在古代,皇帝是最牛b的人(不要抬槓,垂簾聽政神馬的不算),而且皇上只能有乙個:
(名字我是故意打錯的,不能調侃古人嘛,哈哈)
場境類:
結果:我是皇上李世明,今年25
時間過去一年..............
我是皇上李世明,今年26
說到這裡,可能有知道這個模式的人會說:不是還有一種方式麼?是,我們下面看看:
場景類一樣,結果呢?也一樣......
大家經常把第一種稱為餓漢式,第二種稱為懶漢式,那他們有什麼不同呢?
如果是你,你會選擇那種呢?大部分人會選擇第二種,看起來牛b,其實我推薦大家選擇第一種,why?因為,第一種方式,可能會出現執行緒問題,第乙個例項做到判斷是否為null時,第二個例項也在初始化,這時虛擬機器認為該物件還未初始化,他就會初始化,然後第乙個接著完成初始化,這樣就會有兩個物件在記憶體中,這樣就會出現問題。
23種設計模式之單例模式
我們也經常遇到類似的情況,為了節約系統資源,有時需要確保系統中某個類只有唯一乙個例項,當這個唯一例項建立成功之後,我們無法再建立乙個同型別的其他物件,所有的操作都只能基於這個唯一例項。為了確保物件的唯一性,我們可以通過單例模式來實現,這就是單例模式的動機所在。定義 單例模式 singleton pa...
23種設計模式之 單例模式
保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。讓類自身負責儲存它的唯一例項,這個類可以保證沒有其他例項可以被建立,並且它可以提供乙個訪問 獲取 該例項的方法。單例類應滿足以下特點 單例類 singleton 自己例項化自己的唯一例項,並提供訪問該唯一例項的方法。public class s...
23種設計模式之單例模式
單例模式 確保乙個類最多只有乙個例項,並提供乙個全域性訪問點 普通單例模式示例 有問題 public class singleton public static singleton getinstance return uniqueinstance 示例singleton public class ...