vlambda博客
学习文章列表

C++设计模式:单例模式


1.单例单例:

保证一个类仅有一个实例,并且提供一个访问它的全局访问点


2.适用范围:

1.只希望用户通过一个全局访问点去访问

2.该类通过继承扩展时用户无需更改代码继续使用全局访问点也能实现扩展

3.常用于管理资源,如日志、线程池


3.代码演示(vs2013 Control):

#include <iostream>using namespace std;
//单例模式类class MyClass{public: ~MyClass(){}protected: MyClass(){}//保护构造函数
public: static MyClass* MyClass::getInstance();//获取实例 void print(){ cout << "This is MyClass!" << endl; }
private: static MyClass *_instrance; };MyClass* MyClass::_instrance = nullptr;MyClass* MyClass::getInstance()//获取实例{ if (_instrance == nullptr){ _instrance = new MyClass(); } return _instrance;}
//演示int main(int argc, char **argv){ //MyClass item; //错误,不能构造 //MyClass *item = new MyClass; //错误,不能构造 MyClass *item = MyClass::getInstance();//正确 item->print();
delete item; item = nullptr; return 0;}

运行结果


-----