乙個類有且僅有乙個例項,並且自行例項化向整個系統提供。
通過單例模式可以保證系統中乙個類只有乙個例項而且該例項易於外界訪問,從而方便對例項個數的控制並節約系統資源。
希望在系統中某個類的物件只能存在乙個。
單例模式有兩種寫法:
1.懶漢式
2.餓漢式
懶漢式實現:
public class single
public static single getinstance()
return instance;
}}
懶漢式的特點式,例項的物件是在用到的時候才建立,這樣就會導致執行緒不安全,因為如果有兩個執行緒同時getinstance()
就有可能建立出來兩個例項,破壞了單例的特性。
懶漢式改進實現:
public class single
public static synchronized single getinstance()
return instance;
}}
加入同步鎖,在多執行緒下可以很好地工作
餓漢式實現:
public class single
public static single getinstance()
}
餓漢式的實現,是利用了classloader機制,在類載入的時候既完成了例項化,這樣就不存在多執行緒的安全問題了,但是這種預載入,
也有占用系統大量資源的風險。
以上的兩種實現方法,無論哪種,都會存在一定的缺點,下面來做一下優化,使得兼具兩種形式的優點:
public class singlet
private single (){}
public static final single getinstance()
}
這種實現方式,既可以實現多執行緒的安全,也可以實現使用時才載入的要求,因為其內部的singleholder靜態類在singlet載入的時候
並不會載入,只有在使用getinstance()才會觸發載入。
設計模式第六天之單例模式
這次和大家分享一下設計模式中的單例模式。說到單例模式,我相信大家都了解,簡單說就是某個類在整個程式中只有乙個物件。那為什麼使用單例模式呢?什麼場景使用單例模式呢?我個人認為,在程式設計中,經過分析,某個類有乙個物件已經可以滿足要求,如果此時再加上這個類會消耗許多資源 包括記憶體開銷大,建立物件耗時等...
(六)設計模式 單例模式
保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。注意 head first 中提到單例模式的時候,類建構函式為私有 private 通過靜態方法建立例項。剛解放時,國家需要人,人多力量大,於是乙個老百姓可能生了很多娃,於是人口迅速暴增。後來實行了計畫生育,規定了一對夫婦最多只能生育一胎,並把...
精講Android設計模式 單例模式
單例的優點 1.只有乙個例項,節省開銷 2.全域性使用方便,同時避免頻繁建立和銷毀 使用單例的注意點 要避免造成 記憶體洩漏 單例不僅要滿足執行緒安全,還要注意防止序列化產生新物件。如果單例實現了serializable介面,就必須加入如下方法 列舉單例不用這麼做,因為jvm能保障這點 privat...