基本定義
單例模式就是確保某一個類只有一個實體,并且提供一個全域訪問點,單例模式有如下幾個特點:
- 它只有一個實體,
- 它必須要自行實體化,
- 它必須自行向整個系統提供訪問點,
代碼實作
餓漢式
直接初始化靜態變數,這樣就保證了執行緒安全,
public class Singleton { private static Singleton singleton = new Singleton(); private Singleton(){ } public static Singleton getInstance(){ return singleton; } }
懶漢式
按需加載. 配合synchronized來處理,也就是說將getInstance()方法變成同步方法
public class LazySingleton { private static volatile LazySingleton lazySingleton; private LazySingleton(){ } public static LazySingleton getInstance(){ if(lazySingleton == null){ synchronized(LazySingleton.class){ lazySingleton = new LazySingleton(); } } return lazySingleton; } }
優點
節約了系統資源,由于系統中只存在一個實體物件,對與一些需要頻繁創建和銷毀物件的系統而言,單例模式無疑節約了系統資源和提高了系統的性能,
因為單例類封裝了它的唯一實體,所以它可以嚴格控制客戶怎樣以及何時訪問它,
缺點
由于單例模式中沒有抽象層,因此單例類的擴展有很大的困難,
JDK原始碼
懶漢式
java.lang.Runtim

餓漢式
java.lang.System

???????

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/12569.html
標籤:設計模式
