单例模式指的是一个类只能有一个实例,其实现思想是将类的构造函数声明为私有的,在类的内部提供静态函数获取内部静态对象的指针,示例如下:
class Singleton {
std::string m_name;
Singleton() {
}
public:
static Singleton *getInstance() {
static Singleton obj;
return &obj;
}
const std::string &name() const { return m_name; }
};
void tsingleton() {
Singleton obj; // 编译不过
Singleton *pobj = Singleton::getInstance();
}
上述代码中类Singleton就是单例类,它不能直接定义对象,因为构造函数是私有的,所以测试函数tsingleton()中obj对象的定义将编译不过,而只能通过静态成员函数getInstance()来获取该类唯一的内部静态对象指针,所以称为单例模式。
通常当我们希望一个类只能有一个实例时,我们采用单例模式这种技术。