1.
簡介:
單例模式是一種常用的軟體設計模式。通過單例模式可以保證系統中某個類只有乙個例項而且該例項易於外界訪問,防止例項存在多個引起程式邏輯錯誤,同時還能方便對例項個數的控制並節約系統資源。如果希望在系統中某個類的物件只能存在乙個,單例模式是最好的解決方案。
2.實現:
為了實現單例設計模式需要保證:
1.某個類只能有乙個例項,要禁止其他程式建立該類物件;
2.為了別的類能夠訪問到該類物件,它必須自行建立這個物件;
3.為了方便別的類進行訪問,它必須對外提供訪問方式。
各步具體實現:
1.將建構函式私有化;
2.在該類中定義乙個靜態的私有物件(方便下面的靜態方法呼叫)
3.在類中提供乙個靜態的公有的函式用於獲取它本身的靜態私有物件
(靜態函式方便別的類在沒有物件的情況下用類名
.方法的方式例項化唯一的物件)。
3.例項: 1.
餓漢式:不管是否用得上,一開始就建立這個單例物件(實際應用中多使用這個方式)
public class singleton
public static singleton getinstance()
}
2.懶漢式:
getinstance()
方法被呼叫時才初始化物件,也叫作物件的延時載入
public class singleton
public static getinstance()
return p;
}}
事實上,這種懶漢式方法在併發環境下很可能出現多個
singleton
的例項,所以可以使用
synchronized
鎖的方式,避免多執行緒訪問時,可能造成的重複初始化問題
public static class singleton
public static singleton getinstance()}}
return p;
}}
這樣,如果乙個物件已經被建立,則不會進入第乙個
if判斷,也不會呼叫
synchronized
方法,避免因呼叫該方法造成效率降低;
而如果沒有物件被建立,
p進入第乙個
if判斷後,
synchronized
將執行緒阻塞,確保第二個建立物件的請求無法得到滿足,第乙個物件建立完成後鎖被開啟,此時
p不為空,第二個建立物件的請求無法進入第二個
if判斷。
這種雙重
if加鎖的方式,嚴格保證了只建立乙個類的例項
單例設計模式(餓漢單例設計模式 懶漢單例設計模式)
1.什麼是單例 單例的意思是乙個類永遠只存在乙個物件,不能建立多個物件。2.為什麼要用單例 開發中有很多的物件我們只需要乙個,例如虛擬機器物件,任務管理器物件 物件越多越佔記憶體,有時候只需要乙個物件就可以實現業務,單例可以節省記憶體空間。3.如何實現單例 單例的實現方式有 餓漢單例設計模式 通過類...
設計模式 單例設計模式
歷史 最早是建築學領域的模式,然後gof四人由其引申到編碼方面,總結了23種設計模式 設計模式 解決某一類事情最行之有效的方法 2.1 體現 餓漢式,保證物件的唯一性 class singleton 私有化建構函式禁止該類建立物件 private static singleton st new si...
設計模式 單例設計模式
單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項 單例模式的要點有三個 一是某個類只能有乙個例項 二是它必須自行建立這個例項 三是它必須自行向整個系統提供這個例項。單例設計模式 解決的問題 可以保...