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() 可能会有问题,最后加上同步锁,当然,如果特别考虑性能,也可以通过两次判断来提供性能,关于两次判断,网上有很多例子