基本定義 單例模式就是確保某一個(gè)類只有一個(gè)實(shí)例,并且提供一個(gè)全局訪問點(diǎn)。單例模式有如下幾個(gè)特點(diǎn):
代碼實(shí)現(xiàn) 餓漢式 直接初始化靜態(tài)變量。這樣就保證了線程安全。 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; } } 優(yōu)點(diǎn) 節(jié)約了系統(tǒng)資源。由于系統(tǒng)中只存在一個(gè)實(shí)例對象,對與一些需要頻繁創(chuàng)建和銷毀對象的系統(tǒng)而言,單例模式無疑節(jié)約了系統(tǒng)資源和提高了系統(tǒng)的性能。 由于單例模式中沒有抽象層,因此單例類的擴(kuò)展有很大的困難。 懶漢式 java.lang.Runtim 餓漢式 java.lang.System ??????? |
|