2013-09-28 30 views

回答

4

Lazy initialization意味着你沒有初始化ialize對象,直到第一次使用它們。

Early initialization僅僅是相反的,你在類加載時預先初始化一個單例。

有辦法做早期初始化,一個是通過聲明你的單身人士爲static

以下爲例:

public class SingletonClassEarly { 
    private static SingletonClassEarly sce = new SingletonClassEarly(); 
    private SingletonClassEarly() {} // make it private 

    public static SingletonClassEarly getInstance() { 
     return sce; 
    } 
} 

作爲每生命週期此singleton JVM後載入啓動時以及類被初始化。它在關閉/退出時由JVM卸載。

+0

Anubhava嗨,有什麼方法爲早期初始化 – upog

+1

@upog:使用'Enum'是另一種方法或使用像Spring一樣的框架注入單例。 – anubhava

0

一個常在辛格爾頓這就是你看到的

private static YouClass singleTon ; 

-- 

-- 

    public static YouClass getInstance(){ 
      if(singleTon == null){ 
       singleTon = new YouClass(); 
      } 
      return singleTon ; 
     } 

在這種情況下,當你叫getInstance()第一次那麼只有YouClass實例獲得創建。

早期初始化,這意味着

在你的類

private static YouClass singleTon = new YouClass(); 

創建實例,同時宣佈它的自我。

Singleton pattern wiki,閱讀類型,

  • 延遲初始化

  • 渴望初始化

  • 靜態塊初始化

1

懶Initalizaion

class SingletonClass { 

    private static SingletonClass object; 
    private SingletonClass() {} 
    public static SingletonClass getInstance(){ 
     if(object == null){ 
      object= new SingletonClass(); //Lazy Initalizaion 
     } 
     return object; 
    } 
} 

早期初始化

​​