Part1 2-6 Java單例模式 2020-01-02

設(shè)計(jì)模式


1. 簡(jiǎn)介:

????1.1 設(shè)計(jì)模式(Disign pattern)是一套被反復(fù)使用专钉、多數(shù)人知曉的捺典、經(jīng)過(guò)分類編目的娇斩、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)茅主。

? ? 1.2 設(shè)計(jì)方案是軟件開(kāi)發(fā)人員在軟件開(kāi)發(fā)過(guò)程中面臨的一般問(wèn)題的解決方案部念。


2. 作用:

? ? 2.1 項(xiàng)目中合理的運(yùn)用設(shè)計(jì)模式可以完美的解決很多問(wèn)題弃酌。

????2.2 每種模式在現(xiàn)在中偶有相應(yīng)的原理來(lái)與之對(duì)應(yīng)。

????2.3 每個(gè)模式描述了一個(gè)在我們周圍不斷重復(fù)發(fā)生的問(wèn)題儡炼,以及該問(wèn)題的核心解決方案妓湘。


3. 面向?qū)ο蟮幕A(chǔ)設(shè)計(jì)模式:

圖1.基礎(chǔ)的設(shè)計(jì)模式






4. 單例模式(Singleton)


????例子:滾滾歷史,永恒定律

--? 一個(gè)朝代只有一個(gè)皇帝

--? 軍隊(duì)的最高司令只有一個(gè)

--? 一山不容二虎


4.1 目的:

? ? 使類的一個(gè)對(duì)象成為該類系統(tǒng)中唯一的實(shí)例乌询。


4.2 定義:

? ? 一個(gè)類有且僅有一個(gè)實(shí)例榜贴,并且自行實(shí)例化向整個(gè)系統(tǒng)提供。


4.3 要點(diǎn):

? ? 4.3.1 某個(gè)類只能有一個(gè)實(shí)例

? ? 4.3.2 必須自行創(chuàng)建實(shí)例

? ? 4.3.3 必須自行向整個(gè)系統(tǒng)提供這個(gè)實(shí)例


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

? ? 4.41 在內(nèi)存中只有一個(gè)對(duì)象妹田,節(jié)省內(nèi)存空間唬党。

? ? 4.4.2 避免頻繁的創(chuàng)建銷毀對(duì)象鹃共,提高性能。

? ? 4.4.3 避免對(duì)共享資源的多重利用


4.5 缺點(diǎn):

? ? 4.5.1 擴(kuò)展較困難

? ? 4.5.2 如果實(shí)例化后對(duì)象長(zhǎng)期不利用驶拱,系統(tǒng)默認(rèn)為垃圾進(jìn)行回收霜浴,造成對(duì)象狀態(tài)的丟失。


4.6 適用場(chǎng)景

? ? 4.6.1 創(chuàng)建對(duì)象時(shí)占用資源過(guò)多蓝纲,同時(shí)有需要用到該類對(duì)象

????4.6.2 對(duì)系統(tǒng)內(nèi)資源要求統(tǒng)一讀寫阴孟,如讀寫配置信息

? ? 4.6.3 當(dāng)多個(gè)實(shí)例存在可能引起邏輯錯(cuò)誤,如號(hào)碼生成器


4.7 實(shí)現(xiàn):

? ? 4.7.1 只提供私有的構(gòu)造方法

? ? 4.7.2 含有一個(gè)該類的靜態(tài)私有對(duì)象

? ?4.7.3 提供一個(gè)靜態(tài)的公有方法用于創(chuàng)建税迷、獲取靜態(tài)私有對(duì)象


4.8 代碼實(shí)現(xiàn)方案:

? ? 4.8.1 餓漢式

? ? ? ? ? ? ?空間換時(shí)間

圖2.餓漢式


????4.8.2 懶漢式

? ? ? ? ? ? ?時(shí)間換空間

圖3.懶漢式


4.9 兩種方式對(duì)比:

4.9.1 餓漢式在類加載時(shí)就創(chuàng)建實(shí)例永丝,第一次加載熟讀快;懶漢式第一次使用時(shí)才進(jìn)行實(shí)例化箭养,第一次加載速度慢类溢。

4.9.2 餓漢式線程安全,懶漢式在多線程操作中有出錯(cuò)的可能露懒,存在線程風(fēng)險(xiǎn)闯冷。解決方案:同步鎖、雙重校驗(yàn)鎖懈词、內(nèi)部靜態(tài)類蛇耀、枚舉。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坎弯,一起剝皮案震驚了整個(gè)濱河市纺涤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌抠忘,老刑警劉巖撩炊,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異崎脉,居然都是意外死亡拧咳,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門囚灼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)骆膝,“玉大人,你說(shuō)我怎么就攤上這事灶体≡那” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵蝎抽,是天一觀的道長(zhǎng)政钟。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么养交? 我笑而不...
    開(kāi)封第一講書人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任衷戈,我火速辦了婚禮,結(jié)果婚禮上层坠,老公的妹妹穿的比我還像新娘殖妇。我一直安慰自己,他們只是感情好破花,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布谦趣。 她就那樣靜靜地躺著,像睡著了一般座每。 火紅的嫁衣襯著肌膚如雪前鹅。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,698評(píng)論 1 305
  • 那天峭梳,我揣著相機(jī)與錄音舰绘,去河邊找鬼。 笑死葱椭,一個(gè)胖子當(dāng)著我的面吹牛捂寿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播孵运,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼秦陋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了治笨?” 一聲冷哼從身側(cè)響起驳概,我...
    開(kāi)封第一講書人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎旷赖,沒(méi)想到半個(gè)月后顺又,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡等孵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年稚照,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片流济。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡锐锣,死狀恐怖腌闯,靈堂內(nèi)的尸體忽然破棺而出绳瘟,到底是詐尸還是另有隱情,我是刑警寧澤姿骏,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布糖声,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蘸泻。R本人自食惡果不足惜琉苇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望悦施。 院中可真熱鬧并扇,春花似錦、人聲如沸抡诞。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)昼汗。三九已至肴熏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間顷窒,已是汗流浹背蛙吏。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鞋吉,地道東北人鸦做。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像谓着,于是被迫代替她去往敵國(guó)和親馁龟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

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