定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
举例: 一个班里只能有一个班主任,无论何时找班主任,都指向同一个人。
类图
班主任类
HeadTeacher.h
#pragma once
// 班主任类
class HeadTeacher
{
public:
~HeadTeacher();
// 访问唯一实例的接口
static HeadTeacher* getInstance();
private:
HeadTeacher(); // 构造函数私有化,禁止外部调用
private:
static HeadTeacher* instance; // 保存唯一实例
};
HeadTeacher.cpp
#include "HeadTeacher.h"
HeadTeacher* HeadTeacher::instance = nullptr;
HeadTeacher::HeadTeacher()
{
}
HeadTeacher::~HeadTeacher()
{
}
HeadTeacher* HeadTeacher::getInstance()
{
if (nullptr == instance)
{
instance = new HeadTeacher();
}
return instance;
}
main.cpp
#include <iostream>
#include "HeadTeacher.h"
int main(int agrc, char* argv[])
{
HeadTeacher* ht1 = HeadTeacher::getInstance();
HeadTeacher* ht2 = HeadTeacher::getInstance();
if (ht1 == ht2)
{
std::cout << "They are the same person." << std::endl;
}
else
{
std::cout << "They are different people." << std::endl;
}
getchar();
return 0;
}
运行结果