《Android源碼設(shè)計模式解析和實(shí)戰(zhàn)》單例設(shè)計模式

單例設(shè)計模式是最簡單也是最常用的設(shè)計模式;介紹單例模式幾種使用肿嘲;
1:餓漢式 靜態(tài) 第一次加載直接初始化
<pre>
public class Person_1 {
private static Person_1 person = new Person_1();
private Person_1() {
}
public static Person_1 getInstance() {
return person;
}
}
</pre>
2:懶漢式 使用時初始化(getInstance())

  1. 每次都需要同步
    <pre>
    public class Person_3 {
    private static Person_3 person_3;
    private Person_3() {
    }
    public static synchronized Person_3 getInstance() {
    if (person_3 == null) {
    person_3 = new Person_3();
    }
    return person_3;
    }
    }
    </pre>
    2)Double Check Lock(DCL) 實(shí)現(xiàn)單例
    雙重判斷避免不必要的同步敲董;
    <pre>
    public class Person_2 {
    private static Person_2 person_2;
    private Person_2() {
    }
    public static Person_2 getInstance() {
    if (person_2 == null) {
    synchronized (Person_2.class) {
    if (person_2 == null) {
    person_2 = new Person_2();
    }
    }
    }
    return person_2;
    }
    }
    </pre>

  2. 靜態(tài)內(nèi)部類單例模式
    第一次調(diào)用getInstance() 才會初始化
    <pre>
    public class Person_4 {
    private Person_4() {
    }
    private static Person_4 person_4;
    public static Person_4 getInstance() {
    return SingleHolder.person_4;
    }
    private static class SingleHolder {
    private static final Person_4 person_4 = new Person_4();
    }
    }
    </pre>
    4)枚舉
    <pre>
    public enum Person_5 {
    INSTANCE;
    @Override
    public String toString() {
    return super.toString();
    }
    }
    </pre>
    5)使用容器
    <pre>
    public class SingletonUtils {
    private static HashMap<String, Object> singletonMap = new HashMap<>();

    private SingletonUtils() {

    }

    public static void setSingleton(String key, Object value) {
    if (!singletonMap.containsKey(key)) {
    singletonMap.put(key, value);
    }
    }

    public static Object getSingleton(String key) {
    return singletonMap.get(key);
    }
    }
    </pre>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蜜徽,更是在濱河造成了極大的恐慌,老刑警劉巖票摇,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拘鞋,死亡現(xiàn)場離奇詭異,居然都是意外死亡矢门,警方通過查閱死者的電腦和手機(jī)盆色,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來祟剔,“玉大人隔躲,你說我怎么就攤上這事∥镅樱” “怎么了宣旱?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長叛薯。 經(jīng)常有香客問我浑吟,道長,這世上最難降的妖魔是什么耗溜? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任组力,我火速辦了婚禮,結(jié)果婚禮上强霎,老公的妹妹穿的比我還像新娘忿项。我一直安慰自己蓉冈,他們只是感情好城舞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著寞酿,像睡著了一般家夺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伐弹,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天拉馋,我揣著相機(jī)與錄音,去河邊找鬼惨好。 笑死煌茴,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的日川。 我是一名探鬼主播蔓腐,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼龄句!你這毒婦竟也來了回论?” 一聲冷哼從身側(cè)響起散罕,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎傀蓉,沒想到半個月后欧漱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡葬燎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年误甚,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谱净。...
    茶點(diǎn)故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡靶草,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出岳遥,到底是詐尸還是另有隱情奕翔,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布浩蓉,位于F島的核電站派继,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏捻艳。R本人自食惡果不足惜驾窟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望认轨。 院中可真熱鬧绅络,春花似錦、人聲如沸嘁字。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纪蜒。三九已至衷恭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間纯续,已是汗流浹背随珠。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留猬错,地道東北人窗看。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像倦炒,于是被迫代替她去往敵國和親显沈。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評論 2 354

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

  • 單例模式(SingletonPattern)一般被認(rèn)為是最簡單析校、最易理解的設(shè)計模式构罗,也因?yàn)樗暮啙嵰锥妫琼?xiàng)目中最...
    成熱了閱讀 4,253評論 4 34
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,098評論 25 707
  • 概念 java中單例模式是一種常見的設(shè)計模式,單例模式的寫法有好幾種遂唧,比較常見的有:懶漢式單例芙代、餓漢式單例。單例模...
    怡紅快綠閱讀 459評論 0 0
  • 1 單例模式的動機(jī) 對于一個軟件系統(tǒng)的某些類而言盖彭,我們無須創(chuàng)建多個實(shí)例纹烹。舉個大家都熟知的例子——Windows任務(wù)...
    justCode_閱讀 1,433評論 2 9
  • 【商洛】商山四皓的典故較有名,賈平凹是秦腔文化及其故鄉(xiāng)的代言人召边;原生態(tài)保旅護(hù)較好铺呵,祛濕清肺的風(fēng)景區(qū)較多;大云寺特別...
    人文商與旅閱讀 193評論 0 0