单例模式全局地提供了一个类的唯一对象,而且类的对象只需要创建一次,避免了创建类的对象开销
代码
single.h
#ifndef HEADFILE
#define HEADFILE
#include <iostream>
using namespace std;
class single
{
public:
single() {}
~single() {}
static single *getinstance();
static single *m_instance;
};
single *single::m_instance=nullptr;//it's necessary
#endif
single.cpp
#include "single.h"
single *single::getinstance()
{
if (!m_instance) {
cout<<"m_instance is created"<<endl;
m_instance=new single();
}
return m_instance;
}
main.cpp
#include "single.cpp"
single a;
int main(int argc, char const *argv[])
{
a.getinstance();
a.getinstance();
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project( single )
INCLUDE_DIRECTORIES(include)
AUX_SOURCE_DIRECTORY(src DIR_SRCS)
add_executable(single ./src/main.cpp)
运行结果
通过运行结果可知,log输出一次,只创建了一个single对象
参考:
https://www.bilibili.com/video/BV1kW411P7KS?p=12
《设计模式,可复用面向对象软件的基础》
欢迎大家评论交流,作者水平有限,如有错误,欢迎指出