> 中文出處:http://www.oschina.net/translate/learning-javascript-design-patterns
> 英文原文:[Learning JavaScript Design Patterns](http://addyosmani.com/resources/essentialjsdesignpatterns/book/)
## 序言
設計模式是可重用的用于解決軟件設計中一般問題的方案。設計模式如此讓人著迷,以至在任何編程語言中都有對其進行的探索。
其中一個原因是它可以讓我們站在巨人的肩膀上,獲得前人所有的經驗,保證我們以優雅的方式組織我們的代碼,滿足我們解決問題所需要的條件。
設計模式同樣也為我們描述問題提供了通用的詞匯。這比我們通過代碼來向別人傳達語法和語義性的描述更為方便。
本文我們將闡述JavaScript編程語言中經典和現代的設計模式。
## 目標讀者
本書的以那些期望提高自己在設計模式方面的知識并將它們應用到javascript編程語言中的專業開發者為目標讀者。
一些所涉及的概念(閉包,原型繼承)將假設讀者具備一定程度的基本的預備知識和理解。如果你發現自己需要更深入的閱讀這個話題,為了你的方便,我們提供了一個推薦書目清單。
如果你希望學習如何寫出漂亮的,具有結構性和組織性的代碼,我相信這本書就是為你而寫。
## 致謝
我將永遠感激那些審閱并幫助改進此書的有才干的技術審核人員們, 包括所有的來自社區的人士。他們帶來的知識和熱情簡直令人驚異。官方的技術審核人員的微博和博客也是一個思想和靈感經常的來源,我誠懇的推薦并挑出它們。
* Nicholas Zakas ([http://nczonline.net](http://nczonline.net/),?[@slicknet](http://twitter.com/slicknet))
* Andrée Hansson ([http://andreehansson.se](http://andreehansson.se/),?[@peolanha](http://twitter.com/peolanha))
* Luke Smith ([http://lucassmith.name](http://http/lucassmith.name/),?[@ls_n](http://twitter.com/ls_n))
* Eric Ferraiuolo ([http://ericf.me/](http://ericf.me/),?[@ericf](http://ericf.me/))
* Peter Michaux ([http://michaux.ca](http://michaux.ca/),?[@petermichaux](http://twitter.com/petermichaux))
* Alex Sexton ([http://alexsexton.com](http://alexsexton.com/),?[@slexaxton](http://twitter.com/slexaxton))
我同樣感謝 Rebecca Murphey ([http://rebeccamurphey.com](http://rebeccamurphey.com/),?[@rmurphey](http://twitter.com/rmurphey)) 為寫作此書時提供的靈感,更重要的是,繼續讓本書可以在GitHub上和通過O'Reilly獲得。
最后,我也感謝我的好妻子,在我整理這本出版物時的不遺余力的支持。
## 編寫人員列表
這本書里所包含的一些模式是基于個人經驗而實現的,其中的許多模式以前都是由JavaScript社團所確認的。因此這項工作是許多開發者所有經驗的結晶。類似于Stoyan Stefanov(在JavaScript 模式里)的防止插入編寫人員列表而打斷敘述這樣的邏輯思路,我在參考資料部分列出了編寫人員列表并且為所有內容建議了閱讀材料。
如果任何文章或者鏈接沒有出現在參考資料列表里,請接受我誠摯的道歉。如果你聯系我的話,我將確保更新這個列表,以把你包含在這個列表里。
## 如何閱讀
本書同時面向初學者和中級開發者,因此假設讀者已掌握 Javascript 的基本知識。如果您要了解更多 Javascript 的相關知識,我很樂意為您推薦以下文章:
* 《JavaScript 權威指南》(原名:JavaScript: The Definitive Guide),David Flanagan 著
* 《JavaScript編程精解》(原名:Eloquent JavaScript),?Marijn Haverbeke?著
* 《JavaScript 模式》(原名:JavaScript Patterns),Stoyan Stefanov 著
* 《JavaScript 語言精粹》(原名:JavaScript: The Good Parts),?Douglas Crockford 著
## 參與翻譯(31人):
[leoxu](http://my.oschina.net/xuleo),?[李勇2](http://my.oschina.net/u/186074),?[ToB藍波灣](http://my.oschina.net/jasonultimate),?[姜鵬飛](http://my.oschina.net/coonooo),?[super0555](http://my.oschina.net/super0555),?[小天](http://my.oschina.net/xiaotian8945),?[lwei](http://my.oschina.net/jawava),?[等PM](http://my.oschina.net/LeeFlyOS),?[幾點人](http://my.oschina.net/jidianren),?[yale8848](http://my.oschina.net/yale8848),?[開源中國首席科學家](http://my.oschina.net/u/1170136),[gugu&gigi](http://my.oschina.net/gugugigi),?[趙亮-碧海情天](http://my.oschina.net/theforever),?[多多de棉花糖](http://my.oschina.net/syscde),?[maxos](http://my.oschina.net/lovaya),?[paper0519](http://my.oschina.net/paper0519),?[LiPengHan](http://my.oschina.net/yupeng),?[yuanhotel](http://my.oschina.net/yuanhotel),?[史濤](http://my.oschina.net/storm0912),?[latpaw](http://my.oschina.net/tiffanyue),?[邵寒超](http://my.oschina.net/yize),?[crossgate9](http://my.oschina.net/tredbag),?[zaobao](http://my.oschina.net/u/576983),?[我本悟靜](http://my.oschina.net/u/584352),?[FortuneLiu](http://my.oschina.net/lonison),?[qalong](http://my.oschina.net/qalong),?[徐繼開](http://my.oschina.net/u/558071),?[鬧鬧爺](http://my.oschina.net/naonaoye),?[sea_wind](http://my.oschina.net/u/614774),?[Ley](http://my.oschina.net/Ley11),?[一刀](http://my.oschina.net/yidao620c)
- 前言
- 簡介
- 什么是設計模式?
- 設計模式的結構
- 編寫設計模式
- 反模式
- 設計模式的分類
- 設計模式分類概覽表
- JavaScript 設計模式
- 構造器模式
- 模塊化模式
- 暴露模塊模式
- 單例模式
- 觀察者模式
- 中介者模式
- 原型模式
- 命令模式
- 外觀模式
- 工廠模式
- Mixin 模式
- 裝飾模式
- 亨元(Flyweight)模式
- JavaScript MV* 模式
- MVC 模式
- MVP 模式
- MVVM 模式
- 最新的模塊化 JavaScript 設計模式
- AMD
- CommonJS
- ES Harmony
- JQuery 中的設計模式
- 組合模式
- 適配器模式
- 外觀模式
- 觀察者模式
- 迭代器模式
- 惰性初始模式
- 代理模式
- 建造者模式
- jQuery 插件的設計模式
- JavaScript 命名空間模式
- 總結
- 參考