設計模式總結——程序員的武功祕籍(上)

萬年前,人類用肢體力量來擴展地盤、獲取食物,那時候比的是發育。後來人們學會了使用工具,開始利用石頭、棍棒。再後來,人類有了文明,刀槍棍棒使得身體素質不是唯一決定強弱的唯一條件。再後來,一些聰明人根據人們的打鬥習慣再加入哲學的思考,以攻守進退、運動疾徐、剛柔虛實爲原則,發明了武術,即使一些身體素質不好的人,根據自己的情況學習相應的武術也能成爲武術高手。這都要感謝發明武術祕籍的人,也要感謝社會的發展對武術人才的需求。到現在,人類發明了火槍,即使一個殘疾人也能把一個壯漢打死,這在以前是不可想象的。


幾十年前,計算機剛剛被髮明, 人們用它來解決一些簡單的問題,程序員編一些簡短的代碼實現些簡短的功能。他們編寫過程隨心所欲,個成風格。隨着社會對計算機及其功能的需求急劇增大,留給程序員的問題也越來越大,這時不是每個程序員都能編寫出合格的軟件,人們陷入了軟件危機,只有個別天才能利用自己的智慧解決好問題。他們達成一致,總結出解決問題的方法供後人學習。以致我們學習幾年編程技術,就能達到一定水平。隨着這些“武功祕籍”的出現,對程序員的要求越來越低,人們使用好工具,懂原則、模式就能編寫代碼。我相信,過幾十年,程序員用嘴說句話相應的軟件就能編寫出代碼。


隨着對《設計模式》的學習,我認爲這門學科就是程序員的武功祕籍,它是前輩們智慧的結晶,告訴了我們可能遇到的各種問題以及解決方法。從機器語言到高級語言,從過程式的開發到面向對象式的開發,這是軟件開發複雜化的體現,也是技術前進的體現。


軟件開發的複雜化體現之一就是需求的多變性。面向過程通過劃分功能模塊,通過函數相互間的調用來實現,需求變化時,就需要更改函數,而改動的函數有可能在多處被調用,關聯多種數據,使得代碼維護和調試變得機場艱難。峯迴路轉,面向對象的編程方式的誕生,解決了變化帶來的問題。面向對象關注的是對象,可以定義自己負責的事物,做要求它自己做的事情。開發者,把需求理解成一個一個的對象,然後製造這些對象,讓他們互相調用,直至符合業務需要。這時候,如果需求再發生改變,我們可以封裝這些變化區域,從而更容易將代碼與變化產生的影響隔離開來。


有了面向對象技術,開發者可以通過代碼的設計使需求的變化不至於產生太大的影響,但是這也對設計開發提高了難度。面向對象設計的複雜性使整體開發再次陷入困境。而設計模式的出現給了我們解決方案,使我們能站在巨人的肩膀上解決複雜的問題。

發佈了49 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章