設(shè)計模式

一疆偿、設(shè)計模式簡介及分類####

所謂模式妈橄,就是套路、固定的代碼翁脆。對于設(shè)計模式眷蚓,重要的是思維和思考方式的轉(zhuǎn)變。

  • 創(chuàng)建型模式
    單例模式反番、工廠模式沙热、抽象工廠模式、建造者模式罢缸、原型模式篙贸。
  • 結(jié)構(gòu)型模式
    適配器模式、橋接模式枫疆、裝飾模式爵川、組合模式、外觀模式息楔、享元模式寝贡、代理模式扒披。
  • 行為型模式
    模板方法模式、命令模式圃泡、迭代器模式碟案、觀察者模式、中介者模式颇蜡、備忘錄模式价说、解釋器模式、狀態(tài)模式风秤、策略模式鳖目、職責(zé)鏈模式、訪問者模式缤弦。

二领迈、常用設(shè)計模式####

1、單例模式
保證一個類只有一個實例甸鸟,并且提供一個范圍該實例的全局訪問點(diǎn)惦费。配置文件類,連接池抢韭,application(共享)薪贫,控制器對象,Bean對象等均采用該模式刻恭∏剖。考察的幾個要點(diǎn):線程安全、效率鳍贾、延時加載鞍匾。

主要形式

  • 懶漢式
    線程安全,效率高骑科,不能延時加載橡淑。一開始就創(chuàng)建了對象(所以不具有延遲加載),后來無論如何訪問都是同一個對象咆爽。
  • 餓漢式
    線程安全梁棠,效率低,延時加載斗埂。調(diào)用時才創(chuàng)建對象符糊,因為對象還沒創(chuàng)建,所以在高并發(fā)的情況下呛凶,可能得到不同的對象男娄,所以要使用同步(synchronized)[1],降低了效率。
  • 雙重檢測鎖式
  • 靜態(tài)內(nèi)部類式
  • 枚舉單例
    除枚舉單例外模闲,前4種方式有反射(reflaction)[2]和序列化漏洞建瘫,可構(gòu)造不同對象。

2围橡、工廠模式
設(shè)計模式的靈魂就是分工暖混,分工能夠組織龐大的項目缕贡,類和對象越多的話翁授,只有分工分的越細(xì),整個項目才更容易擴(kuò)展晾咪。而工廠模式就是實現(xiàn)創(chuàng)建者和使用者的分離收擦。這里要提一下面向?qū)ο蟮娜齻€設(shè)計原則。
a谍倦、OCP原則(開閉原則):一個軟件的實體應(yīng)當(dāng)對擴(kuò)展開放塞赂,對修改關(guān)閉。
b昼蛀、DIP原則(依賴反轉(zhuǎn)):要針對接口編程,不要針對實現(xiàn)編程。
c店归、LoD原則(迪米特原則):只與你直接的朋友通信靶衍,而避免和陌生人通信。

主要形式
在介紹之前夫植,先舉一個未使用工廠模式例子讹剔,以便說明工廠模式。

未使用工廠模式下详民,客戶端調(diào)用子類的依賴關(guān)系(要知道所有細(xì)節(jié))
  • 簡單工廠模式
    劃分層級延欠,實現(xiàn)依賴的分離,隱藏細(xì)節(jié)沈跨。不完全實現(xiàn)OCP原則
簡單工廠模式下由捎,客戶端調(diào)用子類的依賴關(guān)系(不需要知道下面的細(xì)節(jié),但不滿足OCP)
  • 工廠方法模式
彌補(bǔ)簡單工廠模式下未滿足OCP原則的缺陷饿凛,但類冗余
  • 抽象工廠模式
    上面兩個模式都是在創(chuàng)建同一個接口下的子類狞玛,如果創(chuàng)建多個接口下的子類,就需要用到抽象工廠模式笤喳。
存在多個接口的產(chǎn)品族

  1. synchronized是Java語言的關(guān)鍵字为居,當(dāng)它用來修飾一個方法或者一個代碼塊的時候,能夠保證在同一時刻最多只有一個線程執(zhí)行該段代碼杀狡。
    一蒙畴、當(dāng)兩個并發(fā)線程訪問同一個對象object中的這個synchronized(this)同步代碼塊時,一個時間內(nèi)只能有一個線程得到執(zhí)行。另一個線程必須等待當(dāng)前線程執(zhí)行完這個代碼塊以后才能執(zhí)行該代碼塊膳凝。
    二碑隆、然而,當(dāng)一個線程訪問object的一個synchronized(this)同步代碼塊時蹬音,另一個線程仍然可以訪問該object中的非synchronized(this)同步代碼塊上煤。
    三、尤其關(guān)鍵的是著淆,當(dāng)一個線程訪問object的一個synchronized(this)同步代碼塊時劫狠,其他線程對object中所有其它synchronized(this)同步代碼塊的訪問將被阻塞。
    四永部、第三個例子同樣適用其它同步代碼塊独泞。也就是說,當(dāng)一個線程訪問object的一個synchronized(this)同步代碼塊時苔埋,它就獲得了這個object的對象鎖懦砂。結(jié)果,其它線程對該object對象所有同步代碼部分的訪問都被暫時阻塞组橄。
    五荞膘、以上規(guī)則對其它對象鎖同樣適用。 ?

  2. ?
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末玉工,一起剝皮案震驚了整個濱河市羽资,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瓮栗,老刑警劉巖削罩,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異费奸,居然都是意外死亡弥激,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門愿阐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來微服,“玉大人,你說我怎么就攤上這事缨历∫栽蹋” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵辛孵,是天一觀的道長丛肮。 經(jīng)常有香客問我,道長魄缚,這世上最難降的妖魔是什么宝与? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任焚廊,我火速辦了婚禮,結(jié)果婚禮上习劫,老公的妹妹穿的比我還像新娘咆瘟。我一直安慰自己,他們只是感情好诽里,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布袒餐。 她就那樣靜靜地躺著,像睡著了一般谤狡。 火紅的嫁衣襯著肌膚如雪灸眼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天豌汇,我揣著相機(jī)與錄音幢炸,去河邊找鬼泄隔。 笑死拒贱,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的佛嬉。 我是一名探鬼主播逻澳,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼暖呕!你這毒婦竟也來了斜做?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤湾揽,失蹤者是張志新(化名)和其女友劉穎瓤逼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體库物,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡霸旗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了戚揭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诱告。...
    茶點(diǎn)故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖民晒,靈堂內(nèi)的尸體忽然破棺而出精居,到底是詐尸還是另有隱情,我是刑警寧澤潜必,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布靴姿,位于F島的核電站,受9級特大地震影響磁滚,放射性物質(zhì)發(fā)生泄漏佛吓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辈毯。 院中可真熱鬧坝疼,春花似錦、人聲如沸谆沃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽唁影。三九已至耕陷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間据沈,已是汗流浹背哟沫。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锌介,地道東北人嗜诀。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像孔祸,于是被迫代替她去往敵國和親隆敢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評論 2 355

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