单例模式

来源:互联网 发布:sql 试图 编辑:程序博客网 时间:2024/05/23 16:16

定义

  • 单例模式关注的是如何只创建一个对象的问题。
  • 可以通过创建一个唯一的全局变量来搞定,但全局变量这东西是个坏味道,能不用就最好不要用。多线程也有很多风险。
  • 单例模式要做的是保证一个类只有一个实例,并提供一个访问它的全局访问点。此对象应是类对象

C++ DEMO实现

#include<iostream>#include<string>using namespace std;class Singleton{        public:        static Singleton *GetInstance(){            //if(singleInstance == NULL){            //  singleInstance = new Singleton(10);            //}            return singleInstance;        }           static void DeleteInstance(){            if(singleInstance != NULL){                delete singleInstance;                singleInstance = NULL;            }        }    private:        int num;        //类对象,私有构造函数        static Singleton *singleInstance;        Singleton(int num){            this->num = num;        }};Singleton* Singleton::singleInstance = new Singleton(8808);class ConcSingleton:public Singleton{};int main(){    Singleton *s1 = Singleton::GetInstance();    Singleton *s2 = ConcSingleton::GetInstance();    if(s1 == s2){        cout<<"s1 and s2 is the same object!"<<endl;    }    system("pause");    Singleton::DeleteInstance();    return 0;}

运行结果

这里写图片描述

一点想法

  • 比如日志模块可用单例模式,构造一次,所有其他部分都可使用。全局变量不要用,那么就用单例模式来搞一个类对象
  • 多线程的场景没考虑,多线程的场景可以参考下这篇博客:C++设计模式——单例模式
0 0
原创粉丝点击