Singleton是一个非常常用的设计模式。几乎所有稍大的程序都会用到它。所以构建一个线程安全,并且高效的singleton很重要。既然要讨论这个主题,我们就先来定义一下我们的需求:
Lazy initialization。只有在第一次使用的时候才需要初始化出一个singleton对象。这使得程序不需要考虑过多顺序耦合的情况。同时也避免了启动时初始化太多不知道什么时候才会用到的东西。
线程安全。多个线程有可能同时调用singleton。如果只需要单线程,那实在没什么需要讨论的。
高效。因为singleton会被反复调用,如果效率低的话浪费太大了。
通用。适合现有的各种平台,以及未来可能出现的平台。
有了这些需求,我们就可以开始讨论如何构造这么一 ...