Java單例模式使用及注意事項

2021-09-12 02:22:52 字數 1252 閱讀 6975

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時,不可跨緯度指定空間大小,只能先指定分配好高緯度再分配...