> 中文出处: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 命名空间模式
- 总结
- 参考