单子模式的使用

public class SingleSon {
private static SingleSon s = null;

private SingleSon() {
}

public static SingleSon get() {
if(s == null) {
s = new SingleSon();
}
return s;

}
}

那个类对象s能不能定义未public?
定义未public不也只产生一个对象吗?好像也符合单子模式的概念?
[b]问题补充:[/b]
如果类对象s可以定义为public,那静态方法get()是否可以省略???

如果你将S定义成public的话,那么就不能象现在这样使用惰性加载了,你必须public static SingleSon s = new SingleSon () 你的get()方法就没有存在的必要了,这两者本身并没有太大的区别,只是对象何时产生而已

当然可以,为什么不可以

你将构造函数定义成private是为了让别人在调用你的class的时候不能new出来,这正是单例模式的一个基本特征,你想,如果你的构造函数是public的,那么别人不是就可以new SingleSon ()了吗 ?那你这个类还怎么单例啊,所以,单例模式通过提供一个static的静态方法让别人获得对自己的引用,这样就可以由自己来控制对象的产生了,不过你需要注意多线程的情况下 public static SingleSon get() 可能会有问题,最后加上同步锁,当然,如果特别考虑性能,也可以通过两次判断来提供性能,关于两次判断,网上有很多例子