1. 說明
1)單例模式:確保乙個類只有乙個例項,自行例項化並向系統提供這個例項;
2)單例模式分類:餓單例模式(類載入時例項化乙個物件給自己的引用),懶單例模式(呼叫取得例項的方法如getinstance時才會例項化物件);
3)單例模式要素:
a)私有構造方法
b)私有靜態引用指向自己例項
c)以自己例項為返回值的公有靜態方法
2.例項
1)餓單例模式:
package com.yuxuange.singletondemo;
public class hungrysingleton
public static hungrysingleton getinstance()
}
2)懶單例模式:
package com.yuxuange.singletondemo;
public class lazysingleton
private static lazysingleton instance;
public static synchronized lazysingleton getinstance()
return instance;}}
3)測試類 testsingleton
package com.yuxuange.singletondemo;
public class testsingleton
}
輸出結果:
3.優點和適用場景
1)單例模式的優點:
a)在記憶體中只有乙個物件,節省記憶體空間。
b)避免頻繁的建立銷毀物件,可以提高效能。
c)避免對共享資源的多重占用。
d)可以全域性訪問。
2)適用場景:
a)需要頻繁例項化然後銷毀的物件。
b)建立物件時耗時過多或者耗資源過多,但又經常用到的物件。
c)有狀態的工具類物件。
d)頻繁訪問資料庫或檔案的物件。
4.使用時注意事項
1)使用時不能用反射模式建立單例,否則會例項化乙個新的物件
2)使用懶單例模式時注意執行緒安全問題
3)餓單例模式和懶單例模式構造方法都是私有的,因而是不能被繼承的,有些單例模式可以被繼承。
單例模式不單例注意事項
我們一般的單例模式是這樣實現的 publicclasssingletonclass returninstance privatesingletonclass 在多執行緒的情況下,如果兩個執行緒同時執行到if instance null 的裡面,則該單例模式就不再單例了!解決方案 publicclas...
單例模式的一些注意事項
單例模式是指程序單例,即再同一程序內是單例的,跨程序單例一般需要使用aidl service的模式。單例的三種模式 餓漢式 此模式一般用於此單例在程序開始時就可能被使用,因為是是static修飾的,所以在程序初始化的時候就建立了,基本現在看不到此種方法 public class instancede...
Java陣列使用注意事項
1.陣列必須使用new分配記憶體空間後才可使用,並進行預設的初始化,byte short int long的為0,char為 float double為0.0,string為null,boolean為false。2.多維陣列進行定義宣告和new時,不可跨緯度指定空間大小,只能先指定分配好高緯度再分配...