正确实现按需初始化持有者成语
我有两个版本的“初始化按需持有者成语”:
- http://en.wikipedia.org/wiki/Initialization-on-demand_holder_idiom
- http://en.wikipedia.org/wiki/Singleton_pattern#The_solution_of_Bill_Pugh
上述之间的主要区别在于,第一个声明为私有,但第二个声明为公共。INSTANCE
INSTANCE
请告诉我应该使用哪一个。
很抱歉,我没有发现在我的应用程序中使用私有和公共之间的区别:
public class Singleton {
private int x;
public int getX() {
return x;
}
private Singleton () {}
private static class LazyHolder {
//both private and public works
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return LazyHolder.INSTANCE;
}
}
我唯一要做的就是调用类似的东西,所以两个版本都有效。因此,我想知道使用它们的情况。Singleton.getInsance().getX()