运营网站赚钱,网站开发要学的代码,网站建设准备资料表格,网站建设中 图片文章目录饿汉式懒汉式单例模式(Singleton Pattern#xff0c;也称为单件模式)#xff0c;使用最广泛的设计模式之一。其意图是保证一个类仅有一个实例#xff0c;并提供一个访问它的全局访问点#xff0c;该实例被所有程序模块共享面向对象编程中#xff0c;每个对象都应该…文章目录饿汉式懒汉式单例模式(Singleton Pattern也称为单件模式)使用最广泛的设计模式之一。其意图是保证一个类仅有一个实例并提供一个访问它的全局访问点该实例被所有程序模块共享面向对象编程中每个对象都应该抽象代表一个设备并通过对象完成对某个具体设备的管理和维护对于有些类只能有一个实例很重要例如打印机管理器、设备管理器、任务管理器等实现单例模式的三个主要步骤私有化构造函数使用静态成员变量维护唯一的单例对象定义静态成员函数用于获取单例对象私有化构造函数classSingleton{private:Singleton(void){...}Singleton(constSignletonthat){}...};使用静态成员变量维护唯一的单例对象classSingleton{private:Singleton(void){...}Singleton(constSignletonthat){}...staticSingleton s_instance;};Singleton Singleton::s_instance;定义静态成员函数用于获取单例对象classSingleton{private:Singleton(void){...}Singleton(constSignletonthat){}...staticSingleton s_instance;public:staticSingletongetInstance(void){returns_instance;}};Singleton Singleton::s_instance;饿汉式加载进程时即完成创建饿, 用不用都创建#includeiostreamusingnamespacestd;classSignleton{private:intm_i;Signleton(inti0){m_ii;}Signleton(constSignletonthat){}staticSignleton m_instance;public:staticSignletongetInstance(){returnm_instance;}voidprint(){coutm_iendl;}};Signleton Signleton::m_instance111;intmain(void){Signletons1Signleton::getInstance();Signletons2Signleton::getInstance();Signletons3Signleton::getInstance();//Signleton s4 12; //errorcouts1endl;couts2endl;s1.print();s2.print();return0;}懒汉式用时再创建懒不用再销毁#includeiostreamusingnamespacestd;classSignleton{private:intm_i;staticintm_count;//记录对象的引用次数staticSignleton*m_instance;Signleton(inti0){m_ii;coutconstructor endl;}Signleton(constSignletonthat){}public:staticSignletongetInstance(void){if(m_instanceNULL){m_instancenewSignleton(123);}m_count;return*m_instance;}voidrelease(){m_count--;if(m_count0){deletem_instance;m_instanceNULL;}}~Signleton(){}};Signleton*Signleton::m_instanceNULL;intSignleton::m_count0;intmain(void){//Signleton s1; //errorSignletons1Signleton::getInstance();Signletons2Signleton::getInstance();Signletons3Signleton::getInstance();couts1 s2 s3endl;// 三个引用地址相同s1.release();s2.release();s3.release();return0;}