设计模式----单例模式(c++实现)

    xiaoxiao2021-03-25  88

    /*********************************************************** 单例模式: 思想:保证在程序运行时,只有一个实例化的对象 1.懒汉式     1.只有在使用的时候才去实例化对象,在用不到的时候不去创建     2.首先构造函数私有化,通过静态成员函数赋予外界调用的权限     静态成员变量在类内定义,在类外初始化     3.通过静态成员指针变量来判断对象是否创建 2.饿汉式     1.与懒汉式的区别是,静态成员变量在初始化时,就将对象创建出来     2.通过静态成员函数获得此对象,在获得该实例时,直接返回此对象 **********************************************************/ /********************************************************* 1.单例模式-----懒汉式 **********************************************************/ #include <iostream> using namespace std; class Singelton//懒汉式 { private:     Singelton(){         cout << "单例对象:构造函数" << endl;     } public:     static Singelton *getInstance()     {         if (m_singer == NULL)         {             m_singer = new Singelton;         }         return m_singer;     } private:     static Singelton *m_singer; }; Singelton *Singelton::m_singer = NULL;//懒汉式 并没有创建单例对象 void main() {     cout << "演示 懒汉式" << endl;     Singelton *p1 = Singelton::getInstance();     Singelton *p2 = Singelton::getInstance();     if (p1 != p2)     {         cout << "不是同一个对象" << endl;     }     else     {         cout << "是同一个对象" << endl;     }     system("pause"); } /********************************************************* 2.单例模式-----饿汉式 **********************************************************/ class Singelton2 { private:     Singelton2()     {         m_singer = NULL;         cout << "俄汉式:构造函数" << endl;     } public:     static Singelton2 *getInstance()     {         return m_singer;     } private:     static Singelton2 *m_singer; }; Singelton2 *Singelton2::m_singer = new Singelton2();//饿汉式 在初始化时,直接创建该对象 void main() {     cout << "演示 饿汉式" << endl;     Singelton2 *p1 = Singelton2::getInstance();      Singelton2 *p2 = Singelton2::getInstance();     if (p1 != p2)     {         cout << "不是同一个对象" << endl;     }     else     {         cout << "是同一个对象" << endl;     }     system("pause"); }

    转载请注明原文地址: https://ju.6miu.com/read-36004.html

    最新回复(0)