1.将构造函数设为私有,避免外部实例化类
2.定义一个私有的静态的指针变量来存放唯一的实例的指针 例:static SingleMode * instance;
3.定义一个公共的静态函数用来获取唯一实例
static SingleMode * getinstance()
{
if(instance == nullpter)
instance = new SingleMode();
return instance;//返回单例实例的指针
}
4.在需要使用单例实例的地方,通过调用公共的静态方法获取单例实例
总结:单例模式的关键在于,通过私有化构造函数,限制了直接创建对象的方式,通过公共静态函数 getInstance()
方法控制实例的创建和访问。这样,无论多少次调用 getInstance()
方法,都将返回同一个实例。
class Singleton {
private:
static Singleton* instance; // 静态成员变量,保存单例实例的指针
Singleton() {} // 将构造函数设为私有,禁止外部创建对象
public:
static Singleton* getInstance() { if (instance == nullptr) { // 如果实例不存在,则创建一个新实例
instance = new Singleton(); } return instance; }
void showMessage()
{ std::cout << "Hello, I am a singleton object!" << std::endl; } };
Singleton* Singleton::instance = nullptr; // 初始化静态成员变量
int main()
{ Singleton* singleton1 = Singleton::getInstance();
Singleton* singleton2 = Singleton::getInstance();
singleton1->showMessage(); // 输出 "Hello, I am a singleton object!"
singleton2->showMessage(); // 输出 "Hello, I am a singleton object!"
// 删除对象
delete singleton1;
delete singleton2;
return 0; }