zoukankan      html  css  js  c++  java
  • Qt 单例模式

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

      ① 定义私有的静态对象、对象指针或引用

      ② 将该类构造函数设为private,防止外部用new来实例化

      ③ 外部仅能通过公有静态成员函数获得唯一对象

      单例的实现方式分为懒汉式 和 饿汉式。

      如下是饿汉式的实现方式:

    #ifndef GLOBAL_H
    #define GLOBAL_H
    
    #include <QObject>
    #include <QMutex>
    
    class Global : public QObject
    {
        Q_OBJECT
    public:
        ~Global();
        static Global* GetInstance();
    
    private:
        Global();
    
        static Global *m_instance;
        static QMutex  m_mutex;
    };
    
    #endif // GLOBAL_H
    #include "Global.h"
    
    Global* Global::m_instance = nullptr;
    QMutex  Global::m_mutex;
    
    Global::Global()
    {
    
    }
    
    Global::~Global()
    {
    
    }
    
    Global *Global::GetInstance()
    {
        if (m_instance == nullptr)
        {
            QMutexLocker locker(&m_mutex);
            if (m_instance == nullptr)
            {
                m_instance = new Global();
            }
        }
        return m_instance;
    }
  • 相关阅读:
    设计模式之装饰器模式
    设计模式之原型模式
    设计模式之策略模式
    设计模式之适配器模式
    设计模式之注册模式
    wordpress中add_action和add_filter
    工厂模式
    设计模式之命令链模式
    观察者模式
    工厂模式
  • 原文地址:https://www.cnblogs.com/jiangson/p/11309957.html
Copyright © 2011-2022 走看看