Singleton设计模式是一种责任型模式,它通过隐藏构造器并提供一个对创建对象的单个访问点,确保某个类只有一个实例,并且提供了一个全局访问点。这种模式的宗旨是集中类的职责——创建一个担当独一无二角色的对象(生产唯一实例)。
用C++(c++11)实现Singleton设计模式的示例代码:
#include
#include
class Singleton {
public:
static Singleton& getInstance() {
std::call_once(initInstanceFlag, &Singleton::initSingleton);
return *instance;
}
void setValue(int value) {
this->value = value;
}
int getValue() const {
return value;
}
private:
Singleton() {}
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
static void initSingleton() {
instance = new Singleton();
}
int value;
static Singleton* instance;
static std::once_flag initInstanceFlag;
};
Singleton* Singleton::instance = nullptr;
std::once_flag Singleton::initInstanceFlag;
int main() {
Singleton& singleton1 = Singleton::getInstance();
Singleton& singleton2 = Singleton::getInstance();
singleton1.setValue(10);
std::cout << singleton2.getValue() << std::endl; // 输出10
singleton2.setValue(20);
std::cout << singleton1.getValue() << std::endl; // 输出20
return 0;
}
代码中使用std::call_once来保证只有一个线程可以初始化单例对象。
Singleton设计模式以下特性:
这种模式的宗旨是集中类的职责——创建一个担当独一无二角色的对象(生产唯一实例)——在类的单个实例中。如果有讲的不对,可以评论留言,一起学习