讀《大話設(shè)計模式》(2)終章總結(jié)及自己所思

大話設(shè)計模式這本書最后有一個“OOTV”杯模式大賽衍慎,很有意思,我單獨把它拿出來作為一篇手記网严,順便加上一些結(jié)合實際項目使用設(shè)計模式的所思所感。

首先嗤无,在這一章中理清了設(shè)計模式的三類:創(chuàng)建型設(shè)計模式震束,結(jié)構(gòu)型設(shè)計模式和行為型設(shè)計模式。先列在下面:

創(chuàng)建型設(shè)計模式:

單例模式当犯,工廠方法模式垢村,抽象工廠模式,建造者模式嚎卫,原型模式

結(jié)構(gòu)型設(shè)計模式:

適配器模式嘉栓,裝飾模式,橋接模式拓诸,組合模式侵佃,享元模式,代理模式奠支,外觀模式

行為型設(shè)計模式:

觀察者模式馋辈,模版方法模式,命令模式胚宦,狀態(tài)模式首有,職責(zé)鏈模式燕垃,解釋器模式枢劝,中介者模式井联,訪問者模式,策略模式您旁,備忘錄模式烙常,迭代器模式

其實理清了設(shè)計模式的分類對我們使用設(shè)計模式是很有幫助的,比如在創(chuàng)建對象的時候可以參考哪些模式鹤盒,在組織類之間關(guān)系要想到什么模式蚕脏,遇到“壞味道”的時候要往什么方向去想。

然后又對每種設(shè)計模式進行了梳理侦锯,不同設(shè)計模式進行了比對加深了對每個模式的認識驼鞭。下面主要是我對設(shè)計模式的一些想法。

1)何時想用設(shè)計模式

這個題目有點不大合適尺碰,因為什么時候我們的腦海中都要有設(shè)計模式挣棕,我的意思是什么時候想到用什么樣的設(shè)計模式。其實我覺得設(shè)計模式還可以有一種分類方式亲桥,就是設(shè)計時設(shè)計模式和重構(gòu)時設(shè)計模式洛心。有些設(shè)計模式是我們在設(shè)計項目的時候就要考慮的,比如工廠方法模式题篷,單例模式词身,享元模式等。還有大部分模式都是我們在最初設(shè)計時可能考慮不到的番枚,比如我們最開始只有單一算法法严,想不到用策略模式結(jié)構(gòu)。再如最初只有少量狀態(tài)葫笼,或者少量子類深啤,用ifelse和簡單工廠完全可以駕馭,就不會先考慮工廠方法和狀態(tài)模式渔欢。其實這也是完全可以的墓塌,所以我想說的有兩點:第一最好在一開始設(shè)想好可能擴展的地方進行設(shè)計;第二可以先有當前最優(yōu)解奥额,當變化第一次出現(xiàn)的時候一定要及時修正苫幢,不然會對之后的擴展產(chǎn)生很不好的影響。

2)善于發(fā)現(xiàn)壞味道

我發(fā)現(xiàn)很多書垫挨,或者是課程都會把程序里面的不好的設(shè)計比喻成“壞味道”想想還挺萌的韩肝。壞味道一定是設(shè)計結(jié)構(gòu)有問題,絕大部分可以通過設(shè)計模式來解決九榔。我們舉幾個例子:代碼冗余哀峻,累里面有大量的代碼這是很常見的事情涡相,那么這個時候很有可能違背了單一職責(zé)原則,要多職責(zé)進行重新分配剩蟀。很多的ifelse或者switch結(jié)構(gòu)催蝗,如果實在工廠中可以考慮用工廠方法,在其他類中可以考慮是不是可以用狀態(tài)模式育特,職責(zé)鏈模式替換掉丙号。重復(fù)代碼,造成這種代碼的原因肯定是因為懶缰冤,如果是整個程序共用的一些代碼比如說類型轉(zhuǎn)換犬缨,可以單獨提出來,如果出現(xiàn)在某一個繼承樹中棉浸,就要考慮放到抽象方法中實現(xiàn)怀薛。

3)擴展時的痛點

其實我覺得程序員還是很樂意修改“壞味道”的,但是大部分程序員會忽略結(jié)構(gòu)上的設(shè)計問題迷郑。雖然我們最初設(shè)計的時候是本著開閉原則的枝恋,但是要加新功能的時候還是避免不良想直接對原來的類進行修改甚至增添職責(zé),久而久之維護就變得越來越難三热。如果要加新的功能有幾種方式鼓择,首先如果這個功能可以單獨提出一個類作為類的方法,那是很好的就漾,可以用聚合代替繼承呐能。或者裝飾器模式就是專門為一組子類擴展功能提供支持的一種設(shè)計模式抑堡。如果子類固定的話可以使用訪問者模式來擴展方法摆出。所以設(shè)計模式給我們的解決方案其實很多,發(fā)現(xiàn)老代碼不易改馬上反思首妖,改新代碼的時候第一反應(yīng)應(yīng)該是擴展偎漫。

4)不拘泥于設(shè)計模式結(jié)構(gòu)

設(shè)計模式是一種思想,而不是固定的類圖有缆,這是我一直以來的理解象踊。比如有的時候我們實現(xiàn)的是接口而不是繼承,這樣就不可以用大部分設(shè)計模式了嗎棚壁,答案當然是否定的杯矩。當然這里還要說一點,就是有的時候當你覺得你用的方式和設(shè)計模式的適用范圍不同的時候袖外,第一反應(yīng)還是思考一下適不適合使用這種設(shè)計模式史隆。設(shè)計模式本身也不是沒有變形,比如裝飾模式可以是繼承并聚合父類曼验,也可以直接繼承一個類實現(xiàn)泌射。話又說回來粘姜,在完全理解設(shè)計模式思想之前還是先套模版比較穩(wěn)健,雖然最終目標是活用其思想熔酷。

結(jié)語:設(shè)計模式絕對是從設(shè)計到實現(xiàn)到重構(gòu)整個流程的程序員的利器孤紧,敢于科學(xué)的重構(gòu)自己代碼,敢于科學(xué)的使用設(shè)計模式纯陨,對自己對項目都是大有益處的坛芽。也希望就設(shè)計模式的問題與他人進行交流留储。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末翼抠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子获讳,更是在濱河造成了極大的恐慌阴颖,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丐膝,死亡現(xiàn)場離奇詭異量愧,居然都是意外死亡,警方通過查閱死者的電腦和手機帅矗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門偎肃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人浑此,你說我怎么就攤上這事累颂。” “怎么了凛俱?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵紊馏,是天一觀的道長。 經(jīng)常有香客問我蒲犬,道長朱监,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任原叮,我火速辦了婚禮赫编,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘奋隶。我一直安慰自己擂送,他們只是感情好,可當我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布达布。 她就那樣靜靜地躺著团甲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪黍聂。 梳的紋絲不亂的頭發(fā)上躺苦,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天身腻,我揣著相機與錄音,去河邊找鬼匹厘。 笑死嘀趟,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的愈诚。 我是一名探鬼主播她按,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼炕柔!你這毒婦竟也來了酌泰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤匕累,失蹤者是張志新(化名)和其女友劉穎陵刹,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體欢嘿,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡衰琐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了炼蹦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片羡宙。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖掐隐,靈堂內(nèi)的尸體忽然破棺而出狗热,到底是詐尸還是另有隱情,我是刑警寧澤瑟枫,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布斗搞,位于F島的核電站,受9級特大地震影響慷妙,放射性物質(zhì)發(fā)生泄漏僻焚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一膝擂、第九天 我趴在偏房一處隱蔽的房頂上張望虑啤。 院中可真熱鬧,春花似錦架馋、人聲如沸狞山。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽萍启。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間勘纯,已是汗流浹背局服。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留驳遵,地道東北人淫奔。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像堤结,于是被迫代替她去往敵國和親唆迁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,509評論 2 348

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