第1章 介紹(1 / 1)

編寫易於維護的代碼,其中一個最重要方麵是能夠找到代碼中重複出現的主題並優化它們。這也是設計模式有價值的地方。

在本書第1章,我們將探討可應用於任何編程語言的設計模式發展史和重要性。如果大家已經看過或熟悉這段發展史,可以直接跳到第2章繼續閱讀。

設計模式來源於土木工程師克裏斯托弗·亞曆山大(http://en.wikipedia.org/wiki/ Christopher_Alexander)的早期作品。他經常發表一些作品,內容是總結他在解決設計問題方麵的經驗,以及這些知識與城市和建築模式之間有何關聯。有一天,亞曆山大突然發現,重複使用這些模式可以讓某些設計構造取得我們期望的最佳效果。亞曆山大與薩拉-石川佳純和穆雷·西爾弗斯坦合作創造了一種建築模式語言,幫助設計師提高自己的設計能力,以解決任何規模的設計和建築挑戰。這就是亞曆山大在1977年發表的一篇題為《建築模式語言》的文章,其後又製作成一本完整的精裝書出版(http://www.amazon.co.uk/Pattern-Language-Buildings-Construction-Environmental/dp/ 0195019199/ref=sr_1_1?s=books&ie=UTF8&qid=1329440685&sr=1-1)。

大約在30年前,軟件工程師們開始把亞曆山大編寫的建築設計原則納入首個有關設計模式的文檔中,成為初級開發人員改進編程技巧的指南。需要指出的是,設計模式背後的概念實際上自編程行業誕生以來就已經存在了,雖然是以一種不太正式的形式存在。

關於軟件工程設計模式的最早和最具代表性的作品是1995年出版的《設計模式:可複用麵向對象軟件的基礎》一書。該書的作者是Erich Gamma(http:// en. wikipedia. org/wiki/Erich_Gamma)、Richard Helm(http://www.amazon. co. uk/Pattern-Language- Buildings-Construction- Environmental/ dp/ 0195019199/ ref= sr_1_ 1?s= books&ie= UTF8&qid=1329440685&sr=1-1)、Ralph Johnson(http://en.wikipedia.org/wiki/ Ralph_ Johnson)和John Vlissides(http:// en.wikipedia.org/ wiki/ John-Vlissides),他們以“四人組”著稱(或簡稱為GoF)。

GoF發表的著作大大推動了設計模式概念在編程領域中的進一步發展,因為它描述了很多開發技術和誤區,並列舉了23個麵向對象設計中最常用的經典設計模式。我們將在第7章進一步詳細介紹這些設計模式。

我們將在本書中了解一些流行的JavaScript設計模式,並探討為何某些設計模式比其他模式更適用於我們編寫的程序。要記住,設計模式不僅適用於原生JavaScript(即標準JavaScript代碼),也適用於jQuery和Dojo等抽象庫。在開始之前,我們先來了解一下軟件設計中“模式”的確切定義。