国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

《設(shè)計(jì)模式的藝術(shù)》筆記 - 單例模式

這篇具有很好參考價(jià)值的文章主要介紹了《設(shè)計(jì)模式的藝術(shù)》筆記 - 單例模式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

介紹

????????單例模式優(yōu)點(diǎn)是可以確保系統(tǒng)中只存在單個(gè)對象實(shí)例,缺點(diǎn)是不便擴(kuò)展,一定程度上違背單一原則,既提供業(yè)務(wù)方法,又提供創(chuàng)建對象方法

餓漢式單例

? ? ? ? 在類加載的時(shí)候就創(chuàng)建好對象,獲取對象時(shí)直接返回即可

class EagerSingleton {
public:
    static EagerSingleton *getInstance() {
        return m_inst;
    }

private:
    EagerSingleton() {}

    static EagerSingleton *m_inst;
};

EagerSingleton *EagerSingleton::m_inst = new EagerSingleton();

懶漢式單例

? ? ? ? 在類加載的時(shí)候沒有創(chuàng)建對象,第一次獲取對象時(shí)根據(jù)需要創(chuàng)建對象并返回,此時(shí)需要考慮線程安全問題

class LazySingleton {
public:
    static LazySingleton *getInstance() {
        if (s_inst == NULL) {
            std::lock_guard<std::mutex> lg(s_mtx);
            if (s_inst == NULL) {
                s_inst = new LazySingleton();
            }
        }
        return s_inst;
    }

private:
    LazySingleton() {}

    static LazySingleton *s_inst;
    static std::mutex s_mtx;
};

LazySingleton *LazySingleton::s_inst = NULL;
std::mutex LazySingleton::s_mtx;

餓漢式和懶漢式對比

? ? ? ??

餓漢式和懶漢式優(yōu)缺點(diǎn)
實(shí)現(xiàn)方式 優(yōu)點(diǎn) 缺點(diǎn)
餓漢式 簡單,無須考慮線程安全,調(diào)用速度快 無論是否需要都創(chuàng)建了對象,資源利用效率不高,導(dǎo)致系統(tǒng)啟動時(shí)間變長
懶漢式 系統(tǒng)啟動時(shí)間減少,可以延遲創(chuàng)建對象,提高資源利用效率 需要處理線程安全問題,初始化期間有可能影響系統(tǒng)性能

IoDH技術(shù)

? ? ? ? 應(yīng)該是java語言獨(dú)有的,不確定性能如何文章來源地址http://www.zghlxwxcb.cn/news/detail-785773.html

到了這里,關(guān)于《設(shè)計(jì)模式的藝術(shù)》筆記 - 單例模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 《設(shè)計(jì)模式的藝術(shù)》筆記 - 橋接模式

    ? ? ? ? 橋接模式將抽象部分與其實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。它是一種對象結(jié)構(gòu)型模式,又稱為柄體模式或接口模式 myclass.h myclass.cpp main.cpp ? ? ? ? 1.?分離抽象接口及其實(shí)現(xiàn)部分。橋接模式使用“對象間的關(guān)聯(lián)關(guān)系”解耦了抽象和實(shí)現(xiàn)之間固有的綁定關(guān)系,

    2024年01月18日
    瀏覽(23)
  • 《設(shè)計(jì)模式的藝術(shù)》筆記 - 策略模式

    ? ? ? ? 策略模式定義一系列算法類,將每一個(gè)算法封裝起來,并讓它們可以相互替換。策略模式讓算法獨(dú)立于使用它的客戶而變化,也稱為政策模式。策略模式是一種對象行為模式。 myclass.h myclass.cpp main.cpp ? ? ? ? 1.?策略模式提供了對開閉原則的完美支持。用戶可以在不

    2024年01月25日
    瀏覽(23)
  • 《設(shè)計(jì)模式的藝術(shù)》筆記 - 命令模式

    ? ? ? ? 命令模式將一個(gè)請求封裝為一個(gè)對象,從而可用不同的請求對客戶進(jìn)行參數(shù)化;對請求排隊(duì)或者記錄請求日志,以及支持可撤銷的操作。命令模式是一種對象行為模式,其別名為動作模式或事務(wù)模式。 myclass.h myclass.cpp main.cpp ? ? ? ? 只需要增加一個(gè)CommandQueue類即可

    2024年01月20日
    瀏覽(30)
  • 《設(shè)計(jì)模式的藝術(shù)》筆記 - 組合模式

    ? ? ? ? 組合模式組合多個(gè)對象形成樹形結(jié)構(gòu)以表示具有“部分-整體”關(guān)系的層次結(jié)構(gòu)。組合模式對單個(gè)對象(即葉子對象)和組合對象(即容器對象)的使用具有一致性,又可以稱為“部分—整體”(Part-Whole)模式,它是一種對象結(jié)構(gòu)型模式。 myclass.h myclass.cpp main.cpp ?

    2024年01月19日
    瀏覽(16)
  • 《設(shè)計(jì)模式的藝術(shù)》筆記 - 原型模式

    ? ? ? ? 使用原型實(shí)例指定創(chuàng)建對象的種類,并且通過克隆這些原型創(chuàng)建新的對象。原型模式是一種對象創(chuàng)建型模式。 myclass.h myclass.cpp main.cpp ? ? ? ? 優(yōu)點(diǎn): ? ? ? ? 1.?當(dāng)創(chuàng)建新的對象實(shí)例較為復(fù)雜時(shí),使用原型模式可以簡化對象的創(chuàng)建過程,通過復(fù)制一個(gè)已有實(shí)例可以提

    2024年01月19日
    瀏覽(23)
  • 《設(shè)計(jì)模式的藝術(shù)》筆記 - 簡單工廠模式

    《設(shè)計(jì)模式的藝術(shù)》筆記 - 簡單工廠模式

    ? ? ? ? 定義一個(gè)工廠類,它可以根據(jù)參數(shù)的不同返回不同類的實(shí)例,被創(chuàng)建的實(shí)例通常都具有相同的父類。因?yàn)樵诤唵喂S模式中用于創(chuàng)建實(shí)例的方法是靜態(tài)方法,因此簡單工廠模式又被稱為靜態(tài)工廠方法模式,屬于類創(chuàng)建型模式 ? ? ? ? 將Factory合并到父類Product中,此時(shí)

    2024年01月16日
    瀏覽(21)
  • 《設(shè)計(jì)模式的藝術(shù)》筆記 - 抽象工廠模式

    ? ? ? ? 提供了一個(gè)創(chuàng)建一系列相關(guān)或相互依賴的對象的接口,而無須指定它們具體的類。抽象工廠模式又稱為Kit模式,它是一種對象創(chuàng)建型模式。 ? ? ? ? 在抽象工廠模式中,每個(gè)具體工廠都提供了多個(gè)工廠方法用于產(chǎn)生多種不同類型的產(chǎn)品,這些產(chǎn)品構(gòu)成了一個(gè)產(chǎn)品族。

    2024年01月16日
    瀏覽(27)
  • 《設(shè)計(jì)模式的藝術(shù)》筆記 - 建造者模式

    ? ? ? ? 建造者模式將一個(gè)復(fù)雜對象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。建造這模式是一種對象創(chuàng)建型模式。 myclass.h myclass.cpp main.cpp ? ? ? ? 優(yōu)點(diǎn): ? ? ? ? 1.?在建造者模式中,客戶端不必知道產(chǎn)品內(nèi)部組成的細(xì)節(jié),將產(chǎn)品本身與產(chǎn)品的創(chuàng)建

    2024年01月16日
    瀏覽(24)
  • 《設(shè)計(jì)模式的藝術(shù)》筆記 - 迭代器模式

    ? ? ? ? 迭代器模式提供一種方法來訪問聚合對象,而不用暴露這個(gè)對象的內(nèi)部表示,其別名為游標(biāo)(Cursor)。迭代器模式是一種對象行為型模式。 myclass.h myclass.cpp main.cpp ? ? ? ? 1. 支持以不同的方式遍歷一個(gè)聚合對象,在同一個(gè)聚合對象上可以定義多種遍歷方式。在迭代

    2024年01月24日
    瀏覽(22)
  • 《設(shè)計(jì)模式的藝術(shù)》筆記 - 享元模式

    ? ? ? ? 享元模式運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度對象的復(fù)用。系統(tǒng)只使用少量的對象,而這些對象都很相似,狀態(tài)變化很小,可以實(shí)現(xiàn)對象的多次復(fù)用。由于享元模式要求能夠共享的對象必須是細(xì)粒度對象,因此它又稱為輕量級模式,是一種對象結(jié)構(gòu)型模式。 myclass.

    2024年01月19日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包