单例模式

来源:互联网 发布:圭尔夫大学知乎 编辑:程序博客网 时间:2024/06/16 14:10

单例模式一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。

具体实现角度来说:

一、单例模式的类只提供私有的构造函数,

二、类定义中含有一个该类的静态私有对象,

三、该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象。


饿汉模式:

头文件:

#ifndef SINGLE_H#define SINGLE_H//饿汉模式单例class Single{public:    static Single *getsingle()    {       static Single sg;       return &sg;    }private:    Single();    ~Single();};#endif // SINGLE_H
源文件:

#include "single.h"#include <QDebug>Single::Single(){    qDebug() << "Single()!";}Single::~Single(){    qDebug() << "~Single()";}
懒汉模式:
头文件:

#ifndef SINGLETON_H#define SINGLETON_H//懒汉模式单例class Singleton{public:    static Singleton *getSingleton()    {        if(nullptr == m_data)        {            m_data = new Singleton;        }        return m_data;    }    void Distory();private:    Singleton();    ~Singleton();    static Singleton *m_data;};#endif // SINGLETON_H
源文件:

#include "singleton.h"#include <QDebug>void Singleton::Distory(){    delete m_data;}Singleton::Singleton(){    qDebug() << "Singleton()!";}Singleton::~Singleton(){    qDebug() << "~Singleton()!";    m_data = nullptr;}Singleton *Singleton::m_data = NULL;
编译环境:Qt:5.3.2



原创粉丝点击