原創(chuàng)作者:阿風(fēng)
日期:2007-06-05
首先說說寫這系列的文章的想法,目的在于:
1.自己也在研習(xí)設(shè)計(jì)模式,通過在自我總結(jié)的過程中,希望能多設(shè)計(jì)模式多一點(diǎn)深刻理解
2.希望給看到這系列文章的朋友一點(diǎn)對(duì)設(shè)計(jì)模式學(xué)習(xí)的幫助,特別是對(duì)設(shè)計(jì)模式的初學(xué)者能起到"引進(jìn)門"的效果,
如果以上的作用能起到哪怕一點(diǎn),我也欣聞而笑了.
設(shè)計(jì)模式(Design Patterns)是什么?為什么會(huì)出現(xiàn)設(shè)計(jì)模式?做過開發(fā)項(xiàng)目的朋友可能都遇到過,一個(gè)問題會(huì)在一個(gè)項(xiàng)目或者多個(gè)項(xiàng)目中重復(fù)出現(xiàn),而相應(yīng)的解決方案都是類似相同,相應(yīng)代碼的實(shí)現(xiàn)也是大同小異,為什么我們不能復(fù)用這些解決方案,或者說我們是否能修改或重新構(gòu)建一下設(shè)計(jì)架構(gòu)來使得重復(fù)的代碼更少,結(jié)構(gòu)更合理? 當(dāng)然,這些是可行且有必要的. 此時(shí)設(shè)計(jì)模式的出現(xiàn)讓我們茅舍頓開.
說到設(shè)計(jì)模式,不得談一本書<Design Patterns:Element of Resuable Object-Oriented Software),作者是GoF,實(shí)際是三個(gè)人合著的.之所以提到這本書,因?yàn)檫@本書的經(jīng)典在于詳細(xì)闡述了23種在軟件開發(fā)過程中運(yùn)用廣泛的"模式",這一個(gè)理念的提出,給面向?qū)ο笤O(shè)計(jì)(OOD)注入了新的血液,體現(xiàn)出OOD超越面向過程設(shè)計(jì)的優(yōu)勢(shì)所在,從此讓程序員看待代碼有了"哲學(xué)的眼光"..
就像這本書定義的模式:每個(gè)模式描述了一個(gè)在我們周圍不斷重復(fù)和發(fā)生的問題,以及該問題解決方案的核心,這樣你就能一次又一次使用該方案而不必做重復(fù)勞動(dòng).
至此,設(shè)計(jì)模式的意義已經(jīng)凸現(xiàn),設(shè)計(jì)模式給我們的啟發(fā)又是什么?的確,每個(gè)經(jīng)典的設(shè)計(jì)模式體現(xiàn)出了大師的精湛思想,我們需要從中得到的啟發(fā)是能否"舉一反三",在我們每一次的軟件設(shè)計(jì)和開發(fā)中融入這些經(jīng)典模式,讓軟件設(shè)計(jì)得更易理解,更易拓展,更易維護(hù).這是設(shè)計(jì)模式給后人的最大啟示.
經(jīng)典的設(shè)計(jì)模式給我的啟示應(yīng)該是個(gè)思想,而不是固定的那幾個(gè)模式,具體的軟件項(xiàng)目或軟件產(chǎn)品,會(huì)有不同情形,我們應(yīng)該依據(jù)具體的情況合理運(yùn)用模式思想,設(shè)計(jì)模式只是"招式"套路,要做到"無招勝有招",需要具體的情形分析,并非一定要套用所謂的模式,但是原則是不變的,"讓軟件易理解,易拓展,易維護(hù)".
把語言特性和設(shè)計(jì)模式有機(jī)結(jié)合起來,對(duì)于程序員來說是一個(gè)成長(zhǎng)的標(biāo)志點(diǎn)也是轉(zhuǎn)折點(diǎn),希望此文能對(duì)所有程序員有所幫助.
用心去寫文章是件不容易的事情,需要堅(jiān)持和執(zhí)著,既然開始,就應(yīng)該堅(jiān)持到底..
這個(gè)系列的文章主要是從GoF的歸納的23種設(shè)計(jì)中挑選十來個(gè)在軟件項(xiàng)目中常用和運(yùn)用的設(shè)計(jì)進(jìn)行講敘,講敘風(fēng)格應(yīng)該是簡(jiǎn)單,深入淺出,思路和代碼相結(jié)合.
該系列文章要講述的幾個(gè)經(jīng)典設(shè)計(jì)模式:(暫定)
實(shí)現(xiàn)語言采用Java,是設(shè)計(jì)模式讓OOD成為軟件開發(fā)歷史上的光輝更加絢爛.
有人說:開始總是好的.所以,趕緊開始把.