Thursday, October 21, 2010

Singleton模式

1. 优点(相比于全局变量):
 
    1.1 避免污染全局空间。

    1.2 根本上避免了类被重复实例化。因为只能从唯一的接口得到类的instance。

    1.3 允许更灵活的实现策略。

2 缺点:

    2.1 构造函数没法传递参数。

    2.2 销毁instance时,确定销毁顺序很困难。Instance在需要时创建,但没有信息指引不同类型Singleton instance之间的依赖关系。

    2.3 不同厂商的编译器和硬件平台,有可能使用不同的优化措施,这导致Singleton模式在多线程环境下可能有严重的潜在问题,即使使用"Double-checked locking"等措施也不能完全避免。下边这篇文章针对Java,但大部分也适用于C++:
 
         http://www.ibm.com/developerworks/java/library/j-dcl.html

No comments: