2007年3月4日javalobby文章:
Do we really need singletons ?
http://www.javalobby.org/java/forums/t91076.html

该文讨论了实现真正得singleton的难度,已经对scope的考虑,任何单例都是一定条件和一定范围下的单例。

个人感觉对于 Singleton 的讨论有一点偏题:

1 死锁和同步性能陷阱是 concurrent programming的问题,用不用 Singleton 都存在。Singleton成为性能瓶颈只有在 lazy initialization 的时候才会体现。用Singleton可能出现死锁不能成为不使用Singleton的原因。

2 许多人认为Singleton是邪恶的,其实是因为它破坏了面向对象编程的一致性。比如说,它强制程序员知道他们在和一个特殊的类,Singleton类,打交道;再比如说它不能用于实现多态。所以如果在程序中显式的使用Singleton,会造成修改不方便,Unit Test 不方便,等等。这就是为什么IoC帮助解决了这个问题:不是容器不用Singleton ,而是它帮你用了,所以作为程序员的你就不用关心了。你甚至不知道你在用的这个实例是不是用Singleton产生的。如果将来你不想让使用Singleton了,很容易,在 xml 文件里配制一下就是了。所以说,不是说不用Singleton思想,而是说尽量避免滥用Singleton,这才是关键。

Singleton优点在于可以实现在使用时创建实例
这在c++是很有用的.

这坛子的讨论够热烈,也非常专业。
看大家讨论自己真的非常心虚,
以前都没注意SINGLETON是否会死锁。
学习中

支持kewan
anonymous的理解太教条了。
Singleton的本质是使用某种手段确保某个类只有一个全局的实例。
private的constructor和static的实例获取函数只是实现方法之一。
而用其他实现方法,只要确保全局只有唯一实例,那本质上就还是Singleton。

无语……