我很困惑。我在java中发现了很多Singleton设计模式的实现。其中我发现实现的是:单身设计模式java idioma
public class MySingleton {
private static class Loader {
static MySingleton INSTANCE = new MySingleton();
}
private MySingleton() {}
public static MySingleton getInstance() {
return Loader.INSTANCE;
}
}
如下解释:https://stackoverflow.com。 现在,如果这个实现应该起作用,为什么不会出现以下情况?
public class MySingleton {
private static final MySingleton INSTANCE = new MySingleton();
private MySingleton() {}
public static MySingleton getInstance() {
return INSTANCE;
}
}
我搜索围绕Java如何处理初始化,但找不到任何显示后者的代码将无法正常工作。 取而代之的是,我找到了以下内容:stackoverflow.com,它指出每个静态初始化发生在类的静态方法被调用之前,所以当调用访问INSTANCE(getInstance)的唯一方法时,应该初始化包含单例实例的静态字段。 所以是的,我真的很困惑:如果这段代码有效,为什么不使用这个更简单的单例设计模式?
后者确实有效:它是一个* eager *单例,而前者是* lazy *单例。 –