正确实现按需初始化持有者成语
我有两个版本的“初始化按需持有者成语”:
- http://en.wikipedia.org/wiki/Initialization-on-demand_holder_idiom
- http://en.wikipedia.org/wiki/Singleton_pattern#The_solution_of_Bill_Pugh
上述之间的主要区别在于,第一个声明为私有,但第二个声明为公共。INSTANCEINSTANCE
请告诉我应该使用哪一个。
很抱歉,我没有发现在我的应用程序中使用私有和公共之间的区别:
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()
 
					 
				 
				    		 
				    		 
				    		 
				    		