开发设计模式设计模式之Singleton模式
Hoshea Zhang单例模式是一种创建型设计模式,它确保类只有一个实例,并提供全局访问点。
实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| class Singleton { public: static Singleton& getInstance() { static Singleton instance; return instance; }
void doSomething() { cout<<"singleton"<<endl; }
private: Singleton() {} Singleton(const Singleton&) = delete; Singleton& operator=(const Singleton&) = delete;
static Singleton* instance; };
Singleton* Singleton::instance = nullptr;
int main() { Singleton& s1 = Singleton::getInstance(); Singleton& s2 = Singleton::getInstance();
assert(&s1 == &s2);
s1.doSomething(); s2.doSomething();
return 0; }
|
在上面的示例中,Singleton
类的构造函数是私有的,这意味着只有getInstance()
方法可以创建Singleton
对象。getInstance()
方法使用静态成员变量instance
来存储唯一的实例,并在需要时创建它。由于静态成员变量只会在第一次使用时初始化,因此这种方法可以确保只有一个实例。