单例模式涉及单一的类,这个类创建自己的对象,同时确保单一的对象被创建,这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
特点
1、单例类只有一个实例; 2、单例类创建自己的实例; 3、单例类给其他对象提供这一实例;
介绍
意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 主要解决:一个全局使用的类频繁地创建与销毁。 何时使用:当您想控制实例数目,节省系统资源的时候。 如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。 关键代码:构造函数是私有的。 优点:减少内存的开销,避免一个类频繁的创建与销毁。 缺点:没有接口,不能继承,与单一职责原则冲突。
单例的实现
class Singleton
{
private:
static Singleton
*local_instance
;
Singleton(){};
public:
static Singleton
*getInstance()
{
if (local_instance
== nullptr)
{
local_instance
= new Singleton();
}
return local_instance
;
}
};
Singleton
* Singleton
::local_instance
= nullptr;
int main()
{
Singleton
* s
= Singleton
::getInstance();
return 0;
}