Qt設計模式:單實例

基本思想

  1. 私有化類的構造函數谍倦,作用:不允許在棧上創(chuàng)建對象或使用new操作符創(chuàng)建對象捻激;
  2. 通過靜態(tài)公有方法戚长,如命名為:getInstance()獲取對象實例;
  3. 確保類對象只被初始化一次榆俺,類成員具有全局唯一性。

優(yōu)點和用途

  1. 常用于程序的全局配置坞淮;
  2. 常用于程序引擎類茴晋;
  3. 用于數據的存儲,保證數據的唯一性回窘;
  4. 單實例對象同其他類成員的耦合性低诺擅,在包含單實例頭文件的源代碼文件中,通過單實例類名和作用域符號即可調用靜態(tài)公有方法getInstance()來獲取單實例對象啡直,而不用把單實例對象設置為其他類的成員烁涌;調用單實例對象的公有靜態(tài)方法一般命名為getInstance(),該函數返回單實例對象指針酒觅。

示例代碼

engine.h

#ifndef ENGINE_H
#define ENGINE_H

#include <QObject>
class Engine : public QObject
{
    Q_OBJECT
public:
    //公有靜態(tài)函數
    static Engine* getInstance();
    void doSomething();
private:
    //私有構造函數
    explicit Engine(QObject *parent = 0);
private:
    static Engine* m_engine;
    Q_DISABLE_COPY(Engine)//聲明拷貝構造函數和賦值操作符運算為私有
};

#endif // ENGINE_H

engine.cpp

#include "engine.h"
#include <QDebug>
Engine* Engine::m_engine = NULL;//類外初始化靜態(tài)成員
static QMutex mutex;
Engine::Engine(QObject *parent): QObject(parent)
{
}
void Engine::doSomething()
{
    qDebug()<<__LINE__<<__FUNCTION__;
}
Engine *Engine::getInstance()
{
    if(m_engine == NULL)
    {
        QMutexLocker locker(&mutex);//確保線程安全
        if(m_engine == NULL)
        {
            m_engine = new Engine();
        }
    }
    return m_engine;
}

使用方法

在程序需要用到Engine對象實例的地方撮执,按如下方式調用單實例對象的方法即可。

Engine::getInstance()->doSomething();
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末舷丹,一起剝皮案震驚了整個濱河市抒钱,隨后出現的幾起案子,更是在濱河造成了極大的恐慌颜凯,老刑警劉巖谋币,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異症概,居然都是意外死亡蕾额,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門彼城,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诅蝶,“玉大人,你說我怎么就攤上這事募壕〉骶妫” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵司抱,是天一觀的道長筐眷。 經常有香客問我,道長习柠,這世上最難降的妖魔是什么匀谣? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮资溃,結果婚禮上武翎,老公的妹妹穿的比我還像新娘。我一直安慰自己溶锭,他們只是感情好宝恶,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般垫毙。 火紅的嫁衣襯著肌膚如雪霹疫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天综芥,我揣著相機與錄音丽蝎,去河邊找鬼。 笑死膀藐,一個胖子當著我的面吹牛屠阻,可吹牛的內容都是我干的。 我是一名探鬼主播额各,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼国觉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了虾啦?” 一聲冷哼從身側響起麻诀,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缸逃,沒想到半個月后针饥,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡需频,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年丁眼,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昭殉。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡苞七,死狀恐怖,靈堂內的尸體忽然破棺而出挪丢,到底是詐尸還是另有隱情蹂风,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布乾蓬,位于F島的核電站惠啄,受9級特大地震影響,放射性物質發(fā)生泄漏任内。R本人自食惡果不足惜撵渡,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望死嗦。 院中可真熱鬧趋距,春花似錦、人聲如沸越除。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至翼雀,卻和暖如春饱苟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锅纺。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工掷空, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留肋殴,地道東北人囤锉。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像护锤,于是被迫代替她去往敵國和親官地。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內容

  • 設計模式概述 在學習面向對象七大設計原則時需要注意以下幾點:a) 高內聚烙懦、低耦合和單一職能的“沖突”實際上驱入,這兩者...
    彥幀閱讀 3,741評論 0 14
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,097評論 1 32
  • 1.ios高性能編程 (1).內層 最小的內層平均值和峰值(2).耗電量 高效的算法和數據結構(3).初始化時...
    歐辰_OSR閱讀 29,373評論 8 265
  • 仿佛高中就在昨日,原來昨日是最想念的日子氯析,是最遙遠的距離亏较。我真的老了。
    下雨天小心情閱讀 206評論 0 0
  • 一起吃飯吧(一)傳送門:【青春】一起吃飯吧(一) - 簡書
    程郁柒閱讀 165評論 0 0