Singleton在数学中定义为“有且仅有一个元素的集合”。
单例模式(Singleton),是一种常用的软件设计模式,即通过单例模式创建的类在当前进程中只能产生一个实例。
单例模式的最初定义出现于《设计模式》一书,保证一个类仅有一个实例,并提供一个访问它的全局访问点。
如何保证一个类只有一个实例并且这个实例易于被访问呢?
定义一个全局变量可以确保对象随时都可以被访问,但不能防止我们实例化多个对象。
一个更好的解决办法是让类自身负责保存它的唯一实例,并提供一个访问该实例的方法。即单例模式的三个要点:
某个类有且仅有一个实例;
该类须自行创建这个实例;
该类须向整个系统提供访问该实例的方法。
下面用C++实现单例模式的一种推荐写法,一种能够正确销毁和线程安全的写法。
class Singleton {
public:
static Singleton& get_instance() {
static Singleton s;
return s;
}
void show() {
std::cout << 'This is
Singleton' << std::endl;
}
private:
Singleton() {}
Singleton(const Singleton&) = delete;
Singleton(const Singleton&&) =
delete;
Singleton& operator=(const Singleton&) =
delete;
};
在静态函数 Singleton::getInstance(
单例模式(Singleton),是一种常用的软件设计模式,即通过单例模式创建的类在当前进程中只能产生一个实例。
单例模式的最初定义出现于《设计模式》一书,保证一个类仅有一个实例,并提供一个访问它的全局访问点。
如何保证一个类只有一个实例并且这个实例易于被访问呢?
定义一个全局变量可以确保对象随时都可以被访问,但不能防止我们实例化多个对象。
一个更好的解决办法是让类自身负责保存它的唯一实例,并提供一个访问该实例的方法。即单例模式的三个要点:
某个类有且仅有一个实例;
该类须自行创建这个实例;
该类须向整个系统提供访问该实例的方法。
下面用C++实现单例模式的一种推荐写法,一种能够正确销毁和线程安全的写法。
class Singleton {
public:
private:
};
在静态函数 Singleton::getInstance(
