3、创建型模式

1、单列模式
实现常用步骤
(1)构造函数私有化
(2)提供一个全局的静态方法
(3)在类中定义一个静态指针,指向本来的变量的静态变量指针


//懒汉模式
class Singelton
{
public:
    static Singelton* getInstace() 
    {
        if (sl==NULL)
        {
            sl = new Singelton();
        }
        return sl;
    }
    static void freeInstance() 
    {
        if (sl!=NULL)
        {
            delete sl;
            sl = NULL;
            cout << "free" << endl;
        }
    }
private:
    static Singelton * sl;
    Singelton() 
    {
        cout << "构造函数" << endl;
    }
};

 Singelton * Singelton::sl = NULL;

void test01()
{

    Singelton * s1 = Singelton::getInstace();
    Singelton * s2 = Singelton::getInstace();

    if (s2==s1)
    {
        cout << "是同一个对象" << endl;
    }
    else
    {
        cout << "不是同一个对象" << endl;
    }

    Singelton::freeInstance();

    cout << "------------------------------------" << endl;
}

//饿汉模式
class Singelton
{
public:
    static Singelton* getInstace()
    {
        return sl;
    }
    static void freeInstance()
    {
        if (sl != NULL)
        {
            delete sl;
            sl = NULL;
            cout << "free" << endl;
        }
    }
private:
    static Singelton * sl;
    Singelton()
    {
        cout << "构造函数" << endl;
    }
};
// 不管三七二十一 new出来
Singelton * Singelton::sl = new Singelton();
//相当于一个全局变量,在全局区

void test01()
{

    Singelton * s1 = Singelton::getInstace();
    Singelton * s2 = Singelton::getInstace();

    if (s2 == s1)
    {
        cout << "是同一个对象" << endl;
    }
    else
    {
        cout << "不是同一个对象" << endl;
    }

    Singelton::freeInstance();

    cout << "------------------------------------" << endl;
}

猜你喜欢

转载自blog.csdn.net/u014749668/article/details/81639676