1. 程式人生 > >開篇—-面向物件的設計原則與設計模式

開篇—-面向物件的設計原則與設計模式

        設計模式是前人總結的解決某特定場景的設計問題的方法,就像武學中的一招半式,說白一點就是解決某些問題的慣用法,人們也都把關於“重複發生的問題的描述和解決辦法”統稱為模式。

        “模式”這個詞是不侷限於軟體開發行業的,它幾乎無處不在,它其實就是一種經驗的積累,目前比較流行的是GOF23種經典設計模式。

        比設計模式更重要的是設計原則。如果說設計模式是武學的招式的話,那麼面向物件的設計原則就是武學中的心法。設計原則是指導思想,是牽引,有了這些原則,才讓人們比較容易的去衡量哪些是好的設計,哪些是不好的設計。如果沒有先理解設計原則去學設計模式,就無法理解那些模式為什麼要那麼設計,你只能死記硬背,只能學到其形,無法領會其神。

        記得當初剛參加工作不久時,設計模式開始流行,於是乎也學了學那23種設計模式,一點感覺都沒有,自己也不是那種死記硬背的料,所有後面直接放棄了。後來外接觸了面向物件的設計原則,看起來還不錯,就開始研究,並在後面的工作中不斷的應用,不斷的改進以前程式碼的設計,發現自己的程式碼的重用度與擴充套件效能明顯提高了。很久之後才又去看那23種設計原則,發現很多自己以前都不知不覺中用過了,其他的模式理解起來也容易多了。

        以前曾經有人提過這樣的問題:面向物件軟體設計語言的三大特性:封裝性、繼承性、多型性,你認為哪個最重要、最有用的特性。大多初學者都會認為繼承性是最重要的,這種答案說明他還處在面向物件設計的初級階段,真正最有用的是多型,看看那些設計原則與設計模式,都是需要多型的特性來實現的。

        不管是設計模式,還是設計原則,解決的主要是軟體的複用以及可擴充套件性問題。低耦合高內聚、對修改關閉,對擴充套件開放是軟體設計的終極目標,其所有的設計原則和設計模式都是為這兩條服務的,在後續的文章中將陸續總結這些設計原則與模式。