singleton 的第三种形式

03-10-22 swingseagull
    

刚才在浏览设计模式的分析时谈到了singleton的两种形式,我有时采用下面的这种形式,算不算第三种方式呢?提出来供大家讨论

public class Singleton {
  private static Singleton instance = null;

  //只在第一次被引用时生成,效率与第二种形式是一样的
static {
instance = new Singleton();
}
  
static Singleton getInstance() {

  return instance;   
}

}

    

banq
2003-10-23 15:55

应该是第一种的不同写法。

Fish
2003-10-24 20:43

楼主: 

您的这种写法不对。 最起码你的这个类的构造方法应该是私有的。 不然客户端完全可以new一个出来,而不用getInstance() 方法得到实例。
如果new一个的话,那产生的就不只一个对象了。 

dreamaster
2003-10-27 08:38

这种实现方法是允许new操作的,注意代码中的方法和变量都定义成了static.

zingers
2003-10-27 21:46

我觉得只要用一种懒汉式实现就够了,方法不是讲究多,而是讲究解决问题的。
如果你要有其它功能,比如你说的可以NEW,那就不要把它往单例模式中套,
还有一个错误,单子模式有两个类,命名范式可以是SomethingSingleton,Something,像楼主这样把他们同一化不好。

2Go 1 2 下一页