實話設計模式:GOF《設計模式》不適合作為初學者入門讀物
設計模式的重要性毋庸多言,每一位有經驗的程式設計師都應該熟練掌握設計模式的原理和應用。學習和掌握設計模式,可以說既簡單,又困難。如果學習方法對頭,掌握了科學的思維(其中最重要的應該是抽象思維和邏輯思維)方法和學習方法,那麼學會熟練地運用設計模式就很簡單;如果學習方法不對頭,那麼就會越學越複雜,老也看不懂,不會用,不敢用。
如果你因為讀了大名鼎鼎的《設計模式》這本書,就覺得 Design Patterns 很難、很深奧、很難掌握,這完全是一種誤解。實話實說,著名的四博士 15 年前的那本《設計模式》並不適合作為初學者的入門讀物。學習設計模式應該可以有一種更簡單、更輕鬆、更快捷的方式。所以,除了向大師致敬以外,這也是我想寫《大道至簡:實話設計模式》這本免費公開網路書的一個原因。
實話:GoF 的《設計模式》不適合作為初學者學習設計模式和 OOD 的入門讀物。
凡提 Design Patterns,人們必會從 GoF 設計模式談起。GoF(Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四位博士)的里程碑著作《設計模式》無疑是一本軟體工程史上劃時代的經典名著,設計模式的開山之作。過去 15 年來它一直被國內外的專業和非專業人士反覆地引用、宣講、解析和解讀,導致詮釋、演繹 GoF 設計模式的各類佳作也層出不窮,出現了百舸爭流、捨我其誰的喜人局面。
然而將近 15 年過去了,當代軟體工程無論在 OOD 的理念和方法,還是在 OO 程式語言、實現技術等方面都有了許多顯著的進步和發展,《設計模式》中的許多內容已顯得老舊。從與時俱進的角度看,我們覺得它不適合作為 21 世紀設計模式初學者的入門讀物或教材,它更適合作為一部經典技術歷史文獻供有經驗的程式設計師、軟體工程師和專家們進行參考、研究和收藏。
為什麼說《設計模式》不適合作為初級程式設計師學習的入門教材,我想可能有很多原因。首先,貫穿全書的例項主要圍繞一個文件編輯器的開發,還有不少地方介紹的是更為抽象、難懂的文法解釋和處理,而如今國內大多數程式設計師可能都工作在 IT 應用和系統開發領域,包括企業應用、行業資訊化、網際網路/Web 應用開發等等,估計很少有人會再去從頭開發文件編輯器,因而書中的這些應用案例往往不易為普通讀者,尤其是初學者所理解和熟悉。
此外,書中的實現程式碼、舉例也主要採用了現在許多年輕程式設計師所不熟悉的 Smalltalk 和 C++ 等上世紀 80、90 年代流行的舊版本 OO 程式語言。而近十年來一批更為成熟和高階的當代 OO 程式語言(如 Java、C#、VB.NET 等等)和建模技術(如 UML)已經得到了非常廣泛的應用,同時也出現了一批相當成熟的主流 OO 框架、重用庫和應用開發技術平臺,如 .NET Framework、Struts、Spring、JSF 等等。在這些框架、平臺中,就大量使用了許多經典和創新的設計模式。如果一本設計模式的入門讀物能夠結合這些當代的程式語言、技術、框架和平臺及其應用進行介紹,必然會增加不少時效性和可讀性。
以上列舉的這些情況,無疑都增加了《設計模式》這部經典的閱讀理解難度。簡而言之,儘管 GoF《設計模式》中的 OO 軟體設計原理、原則和思想精髓可能永不過時,但是書中的許多內容和例子確實離大家的日常工作有點遠,如果初學者拿這本書作為學習教材或入門讀物難免讓人有舍易求難、舍簡求繁之感。
張恂
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13633641/viewspace-557949/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 設計模式_GoF設計模式Go
- GOF設計模式Go設計模式
- 寫給Python初學者的設計模式入門Python設計模式
- 【設計模式】設計模式(一)-- 大話設計模式讀書筆記設計模式筆記
- 實踐GoF的23種設計模式:命令模式Go設計模式
- 設計模式入門設計模式
- 讀《大話設計模式》和《head first 設計模式》心得設計模式
- Rust語言之GoF設計模式: 模板方法模式RustGo設計模式
- Rust語言之GoF設計模式:原型模式RustGo設計模式原型
- Rust語言之GoF設計模式:迭代器模式RustGo設計模式
- Rust語言之GoF設計模式:工廠模式RustGo設計模式
- 程式設計“初學者”入門指南 (轉)程式設計
- 實踐GoF的23種設計模式:裝飾者模式Go設計模式
- Go語言實現GoF設計模式:介面卡模式Go設計模式
- 設計模式入門:原型模式設計模式原型
- Rust語言之GoF設計模式:責任鏈模式RustGo設計模式
- Rust語言之GoF設計模式:中介者Mediator模式RustGo設計模式
- Rust語言之GoF設計模式:抽象工廠模式RustGo設計模式抽象
- 設計模式-適配者模式設計模式
- 大話設計模式—命令模式設計模式
- 【大話設計模式】——代理模式設計模式
- 【大話設計模式】——策略模式設計模式
- GOF23--23種設計模式(一)Go設計模式
- Rust語言之GoF設計模式:Flyweight享元模式RustGo設計模式
- GoF設計模式三作者15年後再談模式Go設計模式
- 《從設計到模式》——解讀設計模式設計模式
- 大話設計模式 讀書筆記設計模式筆記
- 大話設計模式讀書筆記設計模式筆記
- 學習設計模式,哪本書適合入門呢?《JAVA與模式》還是《深入淺出設計模式》?設計模式Java
- 大話設計模式讀書筆記6——代理模式設計模式筆記
- 大話設計模式讀書筆記2——策略模式設計模式筆記
- 大話設計模式設計模式
- 設計模式——簡單工廠(又叫靜態工廠方法,不屬於GOF23中設計模式)設計模式Go
- 【大話設計模式】——淺談設計模式基礎設計模式
- 設計模式入門-簡單工廠模式設計模式
- 大話 PHP 設計模式--行為型PHP設計模式
- 大話設計模式:工廠模式設計模式
- 【大話設計模式】—— 原型模式設計模式原型