国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

常用設(shè)計(jì)模式——單例模式

stormgens / 673人閱讀

摘要:一單例模式定義單例模式確保某個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。技術(shù)實(shí)現(xiàn)單例模式靜態(tài)內(nèi)部類評(píng)價(jià)使用靜態(tài)內(nèi)部類的方式,只有在使用該實(shí)例的時(shí)候,才去加載靜態(tài)內(nèi)部類,從而實(shí)現(xiàn)延時(shí)加載。

一、單例模式定義:
單例模式確保某個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。在計(jì)算機(jī)系統(tǒng)中,線程池、緩存、日志對(duì)象、對(duì)話框、打印機(jī)、顯卡的驅(qū)動(dòng)程序?qū)ο蟪1辉O(shè)計(jì)成單例。這些應(yīng)用都或多或少具有資源管理器的功能。每臺(tái)計(jì)算機(jī)可以有若干個(gè)打印機(jī),但只能有一個(gè)Printer Spooler,以避免兩個(gè)打印作業(yè)同時(shí)輸出到打印機(jī)中。每臺(tái)計(jì)算機(jī)可以有若干通信端口,系統(tǒng)應(yīng)當(dāng)集中管理這些通信端口,以避免一個(gè)通信端口同時(shí)被兩個(gè)請(qǐng)求同時(shí)調(diào)用。總之,選擇單例模式就是為了避免不一致狀態(tài),避免政出多頭。

二、實(shí)現(xiàn)方式:

懶漢模式

public class Demo {
    // 1、私有構(gòu)造函數(shù)
    private Demo() {}
    // 2、單例實(shí)例
    private static Demo instance = null;
    // 3、獲取實(shí)例接口
    public static Demo getInstance() {
         if(instance == null) {
            synchronized(Demo.class) {
               if(instance == null) {
                  instance = new Demo();
               }
            }
        }
    return instance;
    }
}

評(píng)價(jià):延時(shí)加載,節(jié)約了內(nèi)存。效率相對(duì)低一些。利用同步塊實(shí)現(xiàn)線程安全。

餓漢模式

public class Singletion {
    private Singletion() {}
    private static Singletion instance = new Singletion(); // Singletion類加載的時(shí)候,就初始化這個(gè)實(shí)例
    public static Singletion getInstance() {
        return instance;
    }
}

評(píng)價(jià):程序啟動(dòng)時(shí)加載,先加載類,再初始化靜態(tài)屬性,由于后面無法再對(duì)對(duì)象進(jìn)行修改,從而實(shí)現(xiàn)線程安全,效率相對(duì)高一些。占用內(nèi)存相對(duì)多一些。

IoDH技術(shù)實(shí)現(xiàn)單例模式(靜態(tài)內(nèi)部類)

public class Singletion {
private Singletion () {}
    private static class InnerSingletion {
        private static Singletion single = new Singletion();
    }
    
    public static Singletion getInstance(){
        return InnerSingletion.single;
    }
    
}

評(píng)價(jià):使用靜態(tài)內(nèi)部類的方式,只有在使用該實(shí)例的時(shí)候,才去加載靜態(tài)內(nèi)部類,從而實(shí)現(xiàn)延時(shí)加載。因?yàn)殪o態(tài)內(nèi)部類只初始化一次,靜態(tài)內(nèi)部類的靜態(tài)屬性也只初始化一次,后面無法修改對(duì)象的狀態(tài),從而實(shí)現(xiàn)線程安全。綜合了上述兩種方法的優(yōu)點(diǎn)。

三、單例模式的優(yōu)缺點(diǎn):
(1)單例模式?jīng)]有抽象層,因此單例模式的擴(kuò)展比較困難的。
(2)單例類的職責(zé)過重,一定程度上違背了“單一職責(zé)原則”。
(3)長(zhǎng)時(shí)間不使用的單例類可能被系統(tǒng)回收,導(dǎo)致單例對(duì)象狀態(tài)的丟失。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/69119.html

相關(guān)文章

  • js常用設(shè)計(jì)模式實(shí)現(xiàn)(一)單例模式

    摘要:什么是設(shè)計(jì)模式設(shè)計(jì)模式是一種能夠被反復(fù)使用,符合面向?qū)ο筇匦缘拇a設(shè)計(jì)經(jīng)驗(yàn)的總結(jié),合理的使用設(shè)計(jì)模式能夠讓你得代碼更容易維護(hù)和可靠設(shè)計(jì)模式的類型共分為創(chuàng)建型模式,結(jié)構(gòu)型模式,行為型模式三種創(chuàng)建型模式創(chuàng)建型模式是對(duì)一個(gè)類的實(shí)例化過程進(jìn)行了抽象 什么是設(shè)計(jì)模式 設(shè)計(jì)模式是一種能夠被反復(fù)使用,符合面向?qū)ο筇匦缘拇a設(shè)計(jì)經(jīng)驗(yàn)的總結(jié),合理的使用設(shè)計(jì)模式能夠讓你得代碼更容易維護(hù)和可靠設(shè)計(jì)模式的類型...

    EscapedDog 評(píng)論0 收藏0
  • 常用設(shè)計(jì)模式

    摘要:工廠設(shè)計(jì)模式工廠設(shè)計(jì)模式,主要用于進(jìn)行實(shí)例化對(duì)象時(shí)的解耦操作,避免使用關(guān)鍵字實(shí)例化對(duì)象,通過反射,根據(jù)類名稱動(dòng)態(tài)創(chuàng)建對(duì)象示例靜態(tài)工廠模式構(gòu)造方法私有化獲取指定類名稱的對(duì)象動(dòng)態(tài)代理模式動(dòng)態(tài)代理模式,主要用于對(duì)同一接口子類的相同邏輯進(jìn)行代理操作 工廠設(shè)計(jì)模式 工廠設(shè)計(jì)模式,主要用于進(jìn)行實(shí)例化對(duì)象時(shí)的解耦操作,避免使用new關(guān)鍵字實(shí)例化對(duì)象,通過反射,根據(jù)類名稱動(dòng)態(tài)創(chuàng)建對(duì)象 示例: pa...

    fizz 評(píng)論0 收藏0
  • java的常用設(shè)計(jì)模式

    摘要:?jiǎn)卫J絾卫龑?duì)象是一種常用的設(shè)計(jì)模式。使用代理模式,可以將功能劃分的更加清晰,有助于后期維護(hù)代碼如下這幾種都是比較常用的設(shè)計(jì)模式,更多設(shè)計(jì)模式后期會(huì)繼續(xù)添加。 說起設(shè)計(jì)模式,很多編程語言的設(shè)計(jì)模式大同小異,而且設(shè)計(jì)模式很多,這里就介紹一下java的幾種常見的設(shè)計(jì)模式,其實(shí)設(shè)計(jì)模式就是一個(gè)軟件的設(shè)計(jì)思想,從大型軟件架構(gòu)出發(fā),為了升級(jí)和維護(hù)方便,所以要降低依賴,降低耦合。先說下設(shè)計(jì)模式原則...

    omgdog 評(píng)論0 收藏0
  • 再遇設(shè)計(jì)模式之JavaScript篇

    摘要:在面向?qū)ο蟮恼Z言中,比如,等,單例模式通常是定義類時(shí)將構(gòu)造函數(shù)設(shè)為,保證對(duì)象不能在外部被出來,同時(shí)給類定義一個(gè)靜態(tài)的方法,用來獲取或者創(chuàng)建這個(gè)唯一的實(shí)例。 萬事開頭難,作為正經(jīng)歷菜鳥賽季的前端player,已經(jīng)忘記第一次告訴自己要寫一些東西出來是多久以的事情了。。。如果,你也和我一樣,那就像我一樣,從現(xiàn)在開始,從看到這篇文章開始,打開電腦,敲下你的第一篇文章(或者任何形式的文字)吧。 ...

    Clect 評(píng)論0 收藏0
  • Javascript設(shè)計(jì)模式(三)單例模式

    摘要:?jiǎn)卫J降亩x是保證一個(gè)類只有僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。并且按照單一職責(zé)原則類實(shí)現(xiàn)功能類管理單例管理單例模式,達(dá)到可組合的的效果創(chuàng)建普通類引入代理類惰性單例模式分離創(chuàng)建實(shí)例對(duì)象的職責(zé)與管理單例的職責(zé)。 單例模式的定義是:保證一個(gè)類只有僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。 單例模式是一種常用的模式,有些對(duì)象我們往往只需要一個(gè),比如線程池,全局緩存,window對(duì)...

    孫吉亮 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<