大衛的Design Patterns學習筆記24:後記

雖然學習、研究設計模式已經很久,但一直未敢動筆寫下任何關於設計模式的文章,一則是因爲DP屬於軟件設計技術,較其它實用編程技術,更爲抽象,需有認真思考、充分實踐才能領會;其二,雖然GoF的DP一書已對所列舉的23種Pattern作了詳細的分析、介紹,但要逐一將體會寫下來,仍然是一件十分艱鉅的任務。因此,從寫第一篇概述到現在歷時3月有餘(已記不清其間有多少次爲了舉一個貼切的例子苦惱到深夜;原本計劃用1個月的時間完成全部文章,由於寫作期間理解的加深,不斷有新東西需要加入,以至於完成日期不斷推後),我沒有將寫完的文章馬上貼出來,而是一直等到寫完了全部計劃的20餘篇文章才一起貼出來,除了考慮到在寫作後面的文章時,隨着理解的深入,可能需要對前面的文章進行修改,另一個重要的原因在於,寫作的過程確實需要有足夠的耐心,而且,由於日常工作的原因,我在寫作之初實在無法預見到自己是否有足夠的時間,足夠的耐心來完成全部文章。
在寫作的過程中,視討論的主題的複雜程度,以講清楚爲主,我並沒有採用一致的敘述方式,希望這不會影響讀者的閱讀。
今天,終於完成了最初計劃的該系列全部文章的寫作(由於最近工作日趨繁忙,不得已取消了一少部分內容,包括:基本OO設計原則、各模式比較<前面已大致作了比較,只是想再集中總結一下>、擴展設計模式<23種設計模式以外的模式>)。
寫作過程中,除了參考了概述中所列舉的幾本重要DP書籍外,還參考了一些網上的DP討論或者相關文章,在此不再一一列舉,僅在此對他們表示感謝。
整個系列是我DP學習的一個總結,我將整個系列命名爲學習筆記,也是希望能夠在今後隨着自己學習、體會的深入,以及與大家討論的深入,能夠不斷將其完善。希望我的這一DP系列能給初學者一些指引,同時希望各路Experts多提寶貴意見,指出我文章中的不足和錯誤之處,我一定及時修改、完善。
最後,需要再次說明的是設計模式需要多思考,多聯繫實際,它並不是空泛的理論,它是可資利用的OOD利器,願大家都能通過實踐掌握Design Patterns這一利器,更加冷靜地面對變化的需求和不斷膨脹的代碼。

附:
在寫作這一系列文章的過程中,偶然從Martin Fowler(OO界大師級人物及技術作家)的網頁(http://martinfowler.com/bliki/OOPSLA2004.html)上瞭解到,OOPSLA2004通過小組討論,認爲GoF列出的23中典型設計模式中的以下四種:
Factory Method
Bridge
Flyweight
Interpreter
由於缺乏通用性,可以被其它模式替代等原因,被建議取消。
但是,即便如此,由於以上模式已被廣泛學習和研究,我認爲在實際當中,以上四個被建議取消的模式仍然存在一定的適用性,仍然值得我們去學習。
目前在設計模式的研究方面,與GoF的DP一書所提出的通用軟件設計模式不同,目前涌現的新的設計模式主要爲應用型設計模式,如Martin Fowler在其Patterns of Enterprise Application Architecture中提出的Web Server Patterns、Distribution Patterns等,Bruce Powel Douglass在其Real-time Design Patterns提出的Real-time Design Patterns等,由此使得Pattern與Framework的界限變得更加模糊。
Martin Fowler作爲OO研究領域的大師級人物,在其書中也提出了一些通用軟件設計模式,但目前對於新的軟件設計模式的研究並沒有充分展開。據說Linda Rising的<Pattern Almanac>收錄的至2000年的模式的種類多達700餘種,但顯然該書並沒有得到普遍的認同,以至於對該書所列舉的模式進行研究的文章還很難找到。參考12分別給出了一些GoF的23種設計模式以外的模式,但並沒有深入的講解,因此,要加以利用還有一定的困難,感興趣的朋友可以去看一下。
目前面世的DP書籍(包括我在筆記1 中提到的GoF的DP一書以外的幾本書)幾乎無一例外循着GoF指定的路線,指定的語言在討論問題,同樣,我的這一系列也無法出其右,做到有所突破,雖然我一直努力在整個系列中多融入一些自己的心得體會,試圖將問題按照我的理解敘述得更加清楚。所以,如果你真的對設計模式感興趣,建議你認真閱讀GoF的DP一書(如果你還沒有這樣做過,或者,這樣做過,但上次閱讀時沒有完全讀懂)。

由於時間的關係,我最終放棄了將擴展設計模式(即23種經典模式以外的模式)的研究納入本系列的想法,感興趣的朋友可以深入研究Martin Fowler的書以獲得更多有關軟件設計模式的知識。

參考:
1
、http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/EspPattlets.asp
2、http://patternshare.org/default.aspx/Home.TableColumns

Bill David
最終修改於2005618日夜
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章