——- android培訓、java培訓、期待與您交流! ———-
爲什麼要使用單例模式,有什麼優點?
單例模式是基於考慮到產生對象太多,會造成內存浪費而實現的一種模式。
根據是否需要延遲加載,又分爲“餓漢式”和“懶漢式”。
(一)餓漢式
class Single
{
private static Single instance = new Single();
private Single(){}
private static Single getInstance()
{
return instance;
}
}
在類的內部定義一個靜態實例對象,通過靜態方法getInstance獲得該實例對象,保證了該類產生對象的單一化,不需要每次都開闢內存空間,new新的對象,節約了內存空間。
(二)懶漢式
class Single
{
private static Single instance = null;
private Single(){}
private static Single getInstance()
{
if(instance==null)
{
synchronized(Single.class)
{
if(instance==null)
instance = new Single();
}
}
return instance;
}
}
懶漢式是定義了一個對象,在需要時才進行實例化,形成一個延時加載。
以上代碼:
1)通過同步代碼塊,保證了單例特性,避免了多線程操作時出現安全隱患。
2)通過雙重判斷,有效地解決了執行效率的問題。