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

2021-07-16 15:53:09 字數 1834 閱讀 4306

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

人物姓名:王小二              出生年月:不詳

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

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

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

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

「要是有一天能夠得到一本任我行的《吸星**》、少林寺《易筋經》和武當的《太極功》該多啊,只有《九陽神功》也可以啊!」王小二又開始了yy。時光荏苒,歲月如梭。雖然沒有神功秘籍,懷揣遠大抱負的王小二,依舊一天天,一月月的在yy中又度過了一年。

兩三年之中,王小二認真的實踐了自己所思所想,幹了不少武林人士應該幹的事的。在這隔三差五的十多次工程實踐(約架)中,王小二在掛彩中慘勝告終的兩次,在倉皇逃走後又丟人的掛彩的三次,直接被人圍在中間打成豬頭哭爹喊娘的十次。

再次就是每次戰敗之後和街頭大媽發生罵戰了,進行各種語言、系統優劣以及各種框架好壞的爭論。這結果更是無須多言,我國大媽的街頭罵功,那可都是宇宙級別的,遠不是街頭混混可比的。王小二也自然每次都是在眾人同情的目光之下,被大媽們罵的目瞪口呆大腦缺氧幾乎休克。這些宇宙級別的選手,每次都會快速完成對王小二的**。這些經歷不止一次讓王小二在午夜的噩夢中驚出滿身冷汗,以為自己就這麼死在了罵戰中。

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

「我把你打得和我一樣,你就知道什麼叫骨骼驚奇,天賦異稟了!」王小二一邊掄拳頭,一邊念念有詞。五分鐘過後,這位街頭化緣的神棍,果然變的和王小二一樣了,渾身布滿大腳印,頭部五彩繽紛的胖噠噠。

「嚓,如來神掌?!我這還叫彌勒佛大腳印呢。」王小二說著又踹了那道長一腳,抓起地上那本《如來神掌》,直接扔到天上去了,「呵,好嘛,吸星**?!還真的有吸星**!」王小二抓住其中一本2023年出版的《吸星**》狂喜不已。

「博採眾家之長,隨機應變,先敵而發。招式是死的,思想是活的,做到隨機應變放算得上登堂入室。若能做到無招勝有招,那就是真的高手了!」在一段時間的研習和認真的與流氓實踐之後,他隱約見望見了高手應該有的境界。越是刻苦的練習,王小二越覺得《吸星**》上討論的那些看似普通的招式,透露出的一些武學理念,值得借鑑。

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

對此我只能說「設計模式」,對於程式設計師來說,猶如《笑傲江湖》中的「葵花寶典」和「吸星**」之於武林人士一樣,莫不感覺如雷貫耳,鼎鼎大名。每個程式設計師起始的時候,也莫不想有幸一窺真經,習得無上神功,從此獨步江湖的衝動。然而一番學習領悟之後,也就會和王小二一樣,覺得「設計模式」這部真經並不能讓你獨步江湖。也會幡然覺悟,此真經和少林五步拳或者武當的形意拳這些做基本的套路,也沒什麼太大區別。關鍵還是在於理念。

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

另外,如果你的程式已經具有易維護、可擴充套件、易復用,有一定的靈活性,或者說你已經能做到有所得程式設計都依賴於抽象,針對抽象而不是針對細節,那麼你再學設計模式其實用處已經不大,至多相互印證一下自己的所思所想。並時常忍不住的會發出「原來他們也是這麼玩的!」的感慨。然而最重要的還是管理複雜性和做到易擴充套件和維護的理念,和對應的一些原則,如單一職責、依賴倒置、介面隔離、開放封閉等原則。如果能做到這些,你會悄然發現,你寫的程式已經暗合設計模式中的某乙個或多個模式。

學程式為什麼要學英語?

首先,你不會英語也能上手程式設計,但是你為什麼要去學英語呢?人是利益驅動的,看看學英語帶來的好處,就能理解為什麼要去學英語了。獲取高質量的學習資源 絕大多數高質量的計算機學習資源都是英文。國內的多數資源都是 二手 的。無損 及時的資訊獲取 大多數計算機經典圖書原版都是英文,我們所看的中文版都是二手加...

為什麼要學DirectX?

老子雲,道生一,一生二,二生三,三生萬物。也就是所謂的九九歸一,萬變不離其宗,所有在計算上執行的程式,最終都是一條條在cpu上執行的二進位制。計算機的硬體就是道,硬體的效能直接給出算計機的運算能力上限,作業系統就是道生出來的一,執行在系統下的各種編譯環境 sdk就是一生出來的二,在各種開發執行環境下...

我們為什麼要學php

移動網際網路盛行的時代,市場會孕育新的產物,而每乙個人可以找能自己發展的方向。我們為什麼要學習php呢?一 php語言的優勢 1 跨平台特性 php幾乎支撐所有的操作體系平台,而且支撐apache iis等多種web伺服器。2 支撐普遍的資料庫 可操縱多種支流與非支流的資料庫。3 易學性 php嵌入...