2011-11-30 71 views

回答

3

这是大约十年前写的。自2004年以来,最简单的Singleton模式是使用一个enum,只有一个例子。

enum Singleton { 
    INSTANCE; 
} 
2

的想法似乎是实例单身可能是昂贵的,所以如果它早做(也许对于很多单身的),可能导致长时间的停顿时,应用程序启动,而懒惰instatiation利差如果不总是需要单身人士,那么周围的延迟可能会完全避免。

这对于大量的应用程序来说真的是一个问题吗?我非常肯定它不是,博客文章的数量和有关懒惰实例化单例的问题与其实际用途完全不成比例。我同样可以肯定,所有这些注意力给了很多人一个印象,那就是如何实现Singletons并使他们在一个直接的半切实例化的Singleton将会非常好的地方选择一个不必要的复杂解决方案。

那么为什么这个问题得到如此多的关注?我怀疑这部分是事实,它说明了Java存储器模型的一些细节,它们与一般的并发代码相关,部分是smartassery游戏。