1. 什么是单例模式?
单例模式是设计模式中的一种,是设计模式中最简单,最常用的一种模式,这种模式用来保证某一个类的对象实例在应用中只有一个,即只被创建一次。
2. 在C++中如何创建单例模式?
有两种具体创建单例模式的方法,分别是“饿汉模式”和“懒汉模式”。
step1: 将构造函数声明为私有的。
step2: 在类中声明一个私有的静态的类的对象(实例)。
step3: 定义一个static类型的public类型的事例获取函数。
3. 饿汉模式。
class Singleton {
private:
Singleton() {} //将构造函数定义为私有的,避免直接创建外部对象。
~Singleton() { delete sig; }
static Singleton *sig; //声明一个私有的静态数据成员sig用来作为为一个实例。
public:
static Singleton *getInstance() //声明一个static类型的接口获得实例
{
return sig;
}
};
Singleton* Singleton::sig = new Singleton; //在类外进行实例的定义和初始化
懒汉模式
class Singleton2 {
private:
Singleton2() {}
static Singleton2 *sig; //只给出声明
public:
static Singleton2* getInstance();
};
Singleton2* Singleton2::getInstance()
{
if (sig == NULL)
{
sig = new Singleton2;
}
return sig;
}
Singleton2* Singleton2::sig; //不初始化,和饿汉模式的区别。