单例模式——大话设计模式读书笔记

单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点。

下面是单例模式的UML图

单例模式

C++实现代码如下:

/*
 * Copyright (c) 2017 initm.com All rights reserved.
 * 作者: Stupid
 * 描述: 单例模式
 * 完成时间: 2017-11-13 22:28
*/
#include <QCoreApplication>
#include <iostream>
#include <cstdlib>

class Singleton
{
private:
    static Singleton* instance;
    Singleton(){

    }
public:
    static Singleton* GetInstance(){
        if(!instance){
            try{
                instance = new Singleton;
            }catch(std::bad_alloc){
                exit(-1);
            }
        }

        return instance;
    }
};

Singleton* Singleton::instance = nullptr;

int main(int argc, char *argv[])
{
    system("chcp 65001");
    QCoreApplication a(argc, argv);

    Singleton* s1 = Singleton::GetInstance();
    Singleton* s2 = Singleton::GetInstance();
    if(s1 == s2){
        std::cout << "同一个对象" << std::endl;
    }

    return a.exec();
}

单例模式保证全局只有一个该类的对象。

发表回复

您的电子邮箱地址不会被公开。