寫出可維護的代碼的一個最重要的方面就是在代碼中能夠注意到重復出現(xiàn)的主題并對其進行優(yōu)化。設計模式的知識領域是無價的。
在本書的第一部分,我們將探索那些真正可以應用于任何編程語言的設計模式的歷史和重要性。如果你已經熟悉這段歷史,可以直接跳過"什么是模式?"這一章繼續(xù)閱讀。
設計模式可以追溯到早期的一名叫Christopher Alexander的建筑師。他經常會發(fā)表一些他在處理設計問題時的經驗和如何與建筑和城鎮(zhèn)相聯(lián)系的。有一天,當Alexander使用了一次又一次后,他發(fā)現(xiàn)某些設計結構會導致做出的效果是最好的。
在Sara Ishikawa和Murray Silverstein的協(xié)作下,Alexander發(fā)明了一種可以幫助授權任何人去設計和構建希望的任何規(guī)模的模式語言。這在1977年的一篇名為"A Pattern Language"的論文中發(fā)表,在后來作為一本完整的精裝書發(fā)表。
大約30年前,軟件工程師開始將Alexander曾寫過的原理并入第一版的設計模式,這是一個用來對那些想要改善他們編碼技巧的新手開發(fā)者的一個指南。要注意,這時設計模式背后的概念實際上已經在編程行業(yè)成立以來就有了,雖然不是那么正式的形式。
第一個也是最標志性的關于軟件工程的設計模式的正式作品是在1995年一本叫Design Patterns: Elements Of Reusable Object-Oriented Software的書中發(fā)表,這是Erich Gamma, Richard Helm, Ralph Johnson和 John Vlissides - 一群被稱為Gang of Four(簡稱GoF)的人寫的。
GoF的出版物被認為是非常有助于推動設計模式的概念在我們的領域發(fā)展的,因為它描述了大量的開發(fā)技術和缺陷,而且還有在今天的世界中大量使用的23個核心的面向對象的設計模式。我們將詳細地在"設計模式分類"這一章中介紹這些模式。
在本書中,我們將看到一些流行的JavaScript設計模式,并探索為什么一些特定的模式比其他的更適合你的項目。但請記住模式不僅僅可以應用在單純的JavaScript (例如:標準JavaScript代碼)里,也可以在一些像jQuery或dojo的抽象庫里使用。在我們開始之前,讓我們看看模式在軟件設計中的確切定義。
更多建議: