單例設計模式
核心思想:在程序運行的過程當中,該類的對象保持有且只有一個的狀態
單例分兩種:懶漢式和餓漢式
單例需要滿足的條件
1.不讓外界創建這個對象即(構造方法需要私有化)
2.在類的內部來創建這個對象即(讓這個對象只創建一次)
3.需要給外部提供一個訪問可以獲得該對象的方法即(提供一個get方法)
懶漢式代碼:
/懶漢式(不完整 線程安全問題 雙鎖控制) 在類被加載的時候 不會去創建對象 只有當你
//調用了獲取該類的方法時 纔會創建該類對象
class SingleL{
//聲明一個對象的引用
private static SingleL singleL=null;
//構造方法私有化
private SingleL() {
}
//獲取對象的方法
public static SingleL getInstance() {
//判斷 當這個對象不存在的時候在創建
if(singleL==null) {
singleL=new SingleL();
}
return singleL;
}
餓漢式代碼:
//餓漢式(只要該類 被加載 就會在方法區的 靜態區中 創建本類對象)
class SingleE{
//聲明一個本類的對象
private static SingleE singleE=new SingleE();
//構造方法私有化
private SingleE() {
}
//對外提供一個訪問的方法
public static SingleE getInstance() {
return singleE;
}
}
實現的結果:打印了兩次,爲了測試單例是否只能被創建一個對象
//打印獲取單例對象 兩者打印的內容是一樣的,說明兩個是同一個對象
System.out.println(SingleE.getInstance());
System.out.println(SingleE.getInstance());
System.out.println("-------------------");
//打印懶漢模式對象
System.out.println(SingleL.getInstance());
System.out.println(SingleL.getInstance());