成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java設(shè)計模式---單例模式

klivitamJ / 1007人閱讀

摘要:單例模式的幾種實現(xiàn)方法具體如下懶漢模式優(yōu)點(diǎn)可以延遲加載缺點(diǎn)多線程不安全餓漢模式優(yōu)點(diǎn)多線程安全缺點(diǎn)加載類時就初始化完成無法延時加載雙重檢查優(yōu)點(diǎn)多線程安全延遲加載缺點(diǎn)同步耗時靜態(tài)內(nèi)部類優(yōu)點(diǎn)多線程安全延遲加載耗時短與雙重檢查相比用緩存實現(xiàn)優(yōu)

單例模式的幾種實現(xiàn)方法,具體如下:

懶漢模式
public class Singleton{
    private static Singleton instance;

    private Singleton(){
    }

    public static Singleton getInstance(){
        if(instance == null){
            instance = new Singleton();
        }
        return instance;
    }
}

優(yōu)點(diǎn)

可以延遲加載

缺點(diǎn)

多線程不安全

餓漢模式
public class Singleton {
    private static Singleton instance = new Singleton();

    private Singleton(){}

    public static Singleton getInstance(){
        return instance;
    }
}

優(yōu)點(diǎn)

多線程安全

缺點(diǎn)

加載類時就初始化完成,無法延時加載

雙重檢查
public class Singleton {

    private static Singleton instance ;

    private Singleton(){}

    public static Singleton getInstance(){
        if (instance == null){
            synchronized (Singleton.class){
                if (instance == null){
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

優(yōu)點(diǎn)

多線程安全

延遲加載

缺點(diǎn)

同步耗時

靜態(tài)內(nèi)部類
public class Singleton {

    private Singleton(){}

    public static Singleton getInstance(){
        return SingletonHolder.instance;
    }

    private static class SingletonHolder {
        private static Singleton instance = new Singleton();
    }
}

優(yōu)點(diǎn)

多線程安全

延遲加載

耗時短(與雙重檢查相比)

用緩存實現(xiàn)
public class Singleton {

    private static final String KEY = "instance";

    private static Map map = new HashMap<>();

    private Singleton(){}

    public static Singleton getInstance(){
        Singleton singleton ;
        if (map.get(KEY) == null){
            singleton = new Singleton();
            map.put(KEY, singleton);
        } else {
            singleton = map.get(KEY);
        }
        return singleton;
    }
}

優(yōu)點(diǎn)

線程安全

缺點(diǎn)

占用內(nèi)存較大

枚舉模式
public enum Singleton {

    instance;

    public void operate(){}
}

優(yōu)點(diǎn)

簡潔

缺點(diǎn)

占用內(nèi)存大(Android官方不推薦使用枚舉)

更多文章請移步我的博客:DevWiki Bolg

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/65535.html

相關(guān)文章

  • 單例模式你會幾種寫法?

    摘要:使用靜態(tài)類體現(xiàn)的是基于對象,而使用單例設(shè)計模式體現(xiàn)的是面向?qū)ο?。二編寫單例模式的代碼編寫單例模式的代碼其實很簡單,就分了三步將構(gòu)造函數(shù)私有化在類的內(nèi)部創(chuàng)建實例提供獲取唯一實例的方法餓漢式根據(jù)上面的步驟,我們就可以輕松完成創(chuàng)建單例對象了。 前言 只有光頭才能變強(qiáng) 回顧前面: 給女朋友講解什么是代理模式 包裝模式就是這么簡單啦 本來打算沒那么快更新的,這陣子在刷Spring的書籍。在看...

    solocoder 評論0 收藏0
  • 設(shè)計模式單例模式

    摘要:單例模式關(guān)注的重點(diǎn)私有構(gòu)造器線程安全延遲加載序列化和反序列化安全反射攻擊安全相關(guān)設(shè)計模式單例模式和工廠模式工廠類可以設(shè)計成單例模式。 0x01.定義與類型 定義:保證一個類僅有一個實例,并提供一個全局訪問點(diǎn) 類型:創(chuàng)建型 UML showImg(https://segmentfault.com/img/bVbtDJ2?w=402&h=268); 單例模式的基本要素 私有的構(gòu)造方...

    陸斌 評論0 收藏0
  • Java設(shè)計模式-單例模式(Singleton Pattern)

    摘要:如果需要防范這種攻擊,請修改構(gòu)造函數(shù),使其在被要求創(chuàng)建第二個實例時拋出異常。單例模式與單一職責(zé)原則有沖突。源碼地址參考文獻(xiàn)設(shè)計模式之禪 定義 單例模式是一個比較簡單的模式,其定義如下: 保證一個類僅有一個實例,并提供一個訪問它的全局訪問點(diǎn)。 或者 Ensure a class has only one instance, and provide a global point of ac...

    k00baa 評論0 收藏0
  • 深入理解單例模式

    摘要:總結(jié)我們主要介紹到了以下幾種方式實現(xiàn)單例模式餓漢方式線程安全懶漢式非線程安全和關(guān)鍵字線程安全版本懶漢式雙重檢查加鎖版本枚舉方式參考設(shè)計模式中文版第二版設(shè)計模式深入理解單例模式我是一個以架構(gòu)師為年之內(nèi)目標(biāo)的小小白。 初遇設(shè)計模式在上個寒假,當(dāng)時把每個設(shè)計模式過了一遍,對設(shè)計模式有了一個最初級的了解。這個學(xué)期借了幾本設(shè)計模式的書籍看,聽了老師的設(shè)計模式課,對設(shè)計模式算是有個更進(jìn)一步的認(rèn)識。...

    FuisonDesign 評論0 收藏0
  • Java基礎(chǔ)學(xué)習(xí)——多線程之單例設(shè)計模式(轉(zhuǎn))

    摘要:總之,選擇單例模式就是為了避免不一致狀態(tài),避免政出多頭。二餓漢式單例餓漢式單例類在類初始化時,已經(jīng)自行實例化靜態(tài)工廠方法餓漢式在類創(chuàng)建的同時就已經(jīng)創(chuàng)建好一個靜態(tài)的對象供系統(tǒng)使用,以后不再改變,所以天生是線程安全的。 概念:  Java中單例模式是一種常見的設(shè)計模式,單例模式的寫法有好幾種,這里主要介紹兩種:懶漢式單例、餓漢式單例?! 卫J接幸韵绿攸c(diǎn):  1、單例類只能有一個實例。 ...

    dendoink 評論0 收藏0
  • 從未這么明白的設(shè)計模式(一):單例模式

    摘要:一般來說,這種單例實現(xiàn)有兩種思路,私有構(gòu)造器,枚舉。而這種方式又分了飽漢式,餓漢式。通過關(guān)鍵字防止指令重排序。什么是單例?為什么要用單例? 一個類被設(shè)計出來,就代表它表示具有某種行為(方法),屬性(成員變量),而一般情況下,當(dāng)我們想使用這個類時,會使用new關(guān)鍵字,這時候jvm會幫我們構(gòu)造一個該類的實例。而我們知道,對于new這個關(guān)鍵字以及該實例,相對而言是比較耗費(fèi)資源的。所以如果我們能夠想...

    NikoManiac 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<