1. 程式人生 > >為什麼要學設計模式?非學不可嗎?

為什麼要學設計模式?非學不可嗎?

所有言語從一個故事開始,而故事要從一份人物簡歷開始。

人物姓名:王小二

出生年月:不詳

年紀:十七八亦或者二十來歲

性格:熱血、衝動、抱負遠大

夢想:渴望成為一枚武林高手,最好習得一身絕世神功,從此可以獨步江湖,笑傲紅塵,金錢滿庫,美女滿懷

現實:只是個會使點蠻力,在街頭打架鬥毆的屌絲。

“我愛上了一個不該愛的人,我的心中都是悔恨。只要想想我心中的夢想,我就忍不住要流口水!可是一想想我如今的處境,立馬尷尬癌啊!”王小二哼著小調,心中都是悔恨,怪自己愛上了一個不該愛的“人”。

“要是有一天能夠得到一本任我行的《吸星大法》、少林寺《易筋經》和武當的《太極功》該多啊,只有《九陽神功》也可以啊!”一毫秒的沮喪和鬼哭狼嚎之後,王小二又臭不要臉的開始了YY

時光荏苒,歲月如梭。雖然沒有神功祕籍,懷揣遠大抱負的王小二,依舊一天天,一月月的在臭不要臉的悔恨中又度過了一年。

一年之中,王小二認真的實踐了自己所思所想,幹了不少武林人士應該乾的事的。首先是在街頭又和幾個流氓隔三差五的約架,並且實實在在的戰鬥了幾場,每次戰鬥之後還都會不斷地寫反思和總結,以備下次所需。儘管王小二如此勤奮努力,外加不斷反思總結,戰鬥的結果依舊不怎麼令人滿意。

在這隔三差五的十多次約架中,王小二在掛彩中慘勝告終的兩次,在倉皇逃走後又丟人的掛彩的三次,直接被人圍在中間打成豬頭哭爹喊孃的十次。

再次就是每次戰敗之後和街頭大媽發生罵戰了。這結果更是無須多言,我國大媽的街頭罵功,那可都是宇宙級別的,遠不是那些街頭混混可比的。王小二也自然每次都是在眾人同情的目光之下,被大媽們罵的目瞪口呆大腦缺氧幾乎休克。這些宇宙級別的選手,每次再快速完成對王小二的屠殺之後,都會意猶未盡,一而再再而三的再再再再再一次的輕蔑的給王小二一個瞧他不起的眼神,然後用鄙視的鼻孔輕哼一聲,轉身,“噠噠”的踩著後腳跟,扭著勝利的屁股滿意離去。這些瞧他不起的眼神和高傲勝利的屁股,不止一次讓王小二在午夜的噩夢中驚出滿身冷汗,以為自己就這麼死在了屁股中。

“小夥子,我看你骨骼驚奇天賦異稟,想來是百年難得一遇的練武奇才,這有一本如來神掌,只要十塊錢,”一個大言不慚的街頭道士拉住了王小二,想要和他化緣一二,然而還不等他的話還沒說完,王小二就掄起了自己的拳頭。

“我把你打得和我一樣,你就知道什麼叫骨骼驚奇,天賦異稟了!”王小二一邊掄拳頭,一邊唸唸有詞。

五分鐘過後,這位街頭化緣的神棍,果然變的和王小二一樣了,一個渾身佈滿大腳印,頭部五彩繽紛的胖豬頭。

“嚓,如來神掌?!我這還叫彌勒佛大腳印呢。”王小二說著又踹了那道長一腳,抓起地上那本《如來神掌》,直接扔到天上去了,隨後又抓起了一本書接著扔。

“嚓,吸星大法?!還真的有吸星大法!”王小二抓住其中一本2008年出版的

書驚奇的大叫,隨後一溜煙的跑了,留下那道長一臉蒙圈。

自從得到了《吸星大法》這本絕世祕籍,王小二那是個日夜苦讀,沒日沒夜的勤加練習。然而越是刻苦的練習,王小二越覺得《吸星大法》上討論的那些看似普通的招式,透露出的一些武學理念,值得借鑑。

“博採眾家之長,隨機應變,先敵而發。招式是死的,思想是活的,做到隨機應變放算得上登堂入室。若能做到無招勝有招,那就是真的高手了!”在一段時間的研習和認真的與流氓實踐之後,他隱約見望見了高手應該有的境界。

話到此處,我們也該來回答一下標題的疑問了。設計模式非學不可嗎?尤其對於半路出家的程式設計師,在經歷過王小二那般為了成了武林高手長時間的掙扎之後,真的非學不可嗎?

對此我只能說“設計模式”,對於程式設計師來說,猶如《笑傲江湖》中的“葵花寶典”和“吸星大法”之於武林人士一樣,莫不感覺如雷貫耳,鼎鼎大名,威震江湖。每個程式設計師起始的時候,也莫不想有幸一窺真經,習得無上神功,從此獨步江湖的衝動。然而一番學習領悟之後,也就會和王小二一樣,覺得“設計模式”這部真經並不能讓你獨步江湖。也會幡然覺悟,此真經只不過是少林五步拳或者武當的形意拳。

儘管只是套路,但若認真練習用心體會,它至少能起到強身健體活絡筋骨的功效,讓一個人變得靈活敏捷,氣色鮮紅,讓你打起架來不至於和街頭無賴抓頭髮掄胳膊那樣毫無招式可言。設計模式也如此,雖不能學了就立刻變作程式設計高手,但學過之後便從此為解決面向物件這個新世界的問題打下堅實技術基礎,也得以窺見了高手之路,不再把程式寫的那麼不能看。

另外,如果你的程式已經具有易維護、可擴充套件、易複用,有一定的靈活性,或者說你已經能做到有所得程式設計都依賴於抽象,針對抽象而不是針對細節程式設計,那麼你再學設計模式其實用處已經不大,至多相互印證一下自己的程式設計思維。

注:這一部分的東西不會再含有圖片,不過還是希望對照此blog學習的同學,可以親自動手敲一敲鍵盤,加深自身對程式碼的感觸。