2013-09-28 29 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; 
    } 
} 

早期初始化

​​