Singleton
目的
在某些应用环境下,我们希望一个类只提供一个实例,用户只能使用一个实例
## 做法
一般来说,我们在类内维持一个静态的成员变量和静态成员函数,在函数内对成员变量进行初始化(准确点说应该是分配对象)
## 注意问题
所有函数都定义为static,并不是好的单例模式,一是因为我们无法保证静态变量的初始化顺序,加入是两个单例类互相使用,这样就无法保证互相的一来关系,另外的问题就是可能失去了面向对象的关键特性——多态
还有一个是如果我们的静态变量是一个对象,那么程序一开始运行,对象就已经存在了,镇不是我们需要的
如果我们希望灵活地使用不同的对象(以后拓展),可以在类内增加一个注册机制,根据环境变量返回不同类型的实例
最后返回指针可能会有一个问题就是,程序员可能会自行去销毁指针所指向的对象,这样就无法再次拥有这个实例了
代码示例
1 |
|