Android中常用的設(shè)計(jì)模式----單例

單例模式可能是平常開(kāi)發(fā)中使用最多的模式了轩娶。

那么單例模式是怎么樣的:單例模式的類(lèi)必須保證只有一個(gè)實(shí)例存在疑务。多用于整個(gè)程序只需要有一個(gè)實(shí)例沾凄,通常很消耗資源的類(lèi),比如網(wǎng)絡(luò)請(qǐng)求知允,IO操作撒蟀,訪問(wèn)數(shù)據(jù)庫(kù)等。由于類(lèi)比較耗資源温鸽,所以沒(méi)必要讓它構(gòu)造多個(gè)實(shí)例保屯。
單例的定義
確保某一個(gè)類(lèi)只有一個(gè)實(shí)例,并且自行實(shí)例化涤垫,向整個(gè)系統(tǒng)提供這個(gè)唯一實(shí)例姑尺。


單例的幾種實(shí)現(xiàn)方式

餓漢式:

 public class Singleton {
    private static final Singleton instance = new Singleton();

    private  Singleton() {}

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

優(yōu)點(diǎn):
①線程安全
②類(lèi)加載時(shí)已經(jīng)創(chuàng)建好了一個(gè)靜態(tài)對(duì)象,調(diào)用時(shí)反應(yīng)快蝠猬。
缺點(diǎn):
①資源效率不高切蟋,可能沒(méi)有使用getInstance,但是其他途徑加載了
該類(lèi),這個(gè)實(shí)例依然會(huì)初始化榆芦。

懶漢式:

public class Singleton{
    private static Singleton instance;
    
    private Singleton(){}
    
    public static **synchronized** Singleton getInstance(){//注意同步
        if(instance == null){
            instance = new Singleton();
        }
        return instance;
    }
}

優(yōu)點(diǎn):
資源利用率高柄粹,延遲初始化,可使用類(lèi)其他靜態(tài)方法匆绣。
缺點(diǎn):
第一次加載慢驻右,多線程情況下不必要的同步開(kāi)銷(xiāo)增大。

雙重校驗(yàn)鎖:

public class Singleton{
    private volatile static Singleton instance;//注意volatile 關(guān)鍵字
    
    private Singleton(){}
    
    public static synchronized Singleton getInstance(){
        if(instance == null){
            synchronized(Singleton.class){
                if(instance == null){
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }

}

添加了volatile關(guān)鍵字犬绒,保證了執(zhí)行順序旺入。保證了高并發(fā)下會(huì)出現(xiàn)的問(wèn)題。

靜態(tài)內(nèi)部類(lèi):

public class Singleton{
    private Singleton(){}
    
    public static Singleton getInstance(){
        return SingletonHolder.instance;
    }
    
    private static class SingletonHolder{
        private static final Singleton instance = new Singleton();
    }
}

\color{#FF0000}{推薦使用雙重校驗(yàn)鎖或者使用靜態(tài)內(nèi)部類(lèi)方式,在非高并發(fā)情況下凯力,去掉雙重校驗(yàn)鎖的volatile也可以}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末茵瘾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子咐鹤,更是在濱河造成了極大的恐慌拗秘,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祈惶,死亡現(xiàn)場(chǎng)離奇詭異雕旨,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)捧请,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén)凡涩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人疹蛉,你說(shuō)我怎么就攤上這事活箕。” “怎么了可款?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵育韩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我闺鲸,道長(zhǎng)筋讨,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任摸恍,我火速辦了婚禮悉罕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘立镶。我一直安慰自己壁袄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布谜慌。 她就那樣靜靜地躺著然想,像睡著了一般。 火紅的嫁衣襯著肌膚如雪欣范。 梳的紋絲不亂的頭發(fā)上变泄,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音恼琼,去河邊找鬼妨蛹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛晴竞,可吹牛的內(nèi)容都是我干的蛙卤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼颤难!你這毒婦竟也來(lái)了神年?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤行嗤,失蹤者是張志新(化名)和其女友劉穎已日,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體栅屏,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡飘千,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了栈雳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片护奈。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖哥纫,靈堂內(nèi)的尸體忽然破棺而出霉旗,到底是詐尸還是另有隱情,我是刑警寧澤磺箕,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布奖慌,位于F島的核電站,受9級(jí)特大地震影響松靡,放射性物質(zhì)發(fā)生泄漏简僧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一雕欺、第九天 我趴在偏房一處隱蔽的房頂上張望岛马。 院中可真熱鬧,春花似錦屠列、人聲如沸啦逆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)夏志。三九已至,卻和暖如春苛让,著一層夾襖步出監(jiān)牢的瞬間沟蔑,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工狱杰, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瘦材,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓仿畸,卻偏偏與公主長(zhǎng)得像食棕,于是被迫代替她去往敵國(guó)和親朗和。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容