我将永远感激那些审阅并帮助改进此书的有才干的技术审核人员们, 包括所有的来自社区的人士。他们带来的知识和热情简直令人惊异。官方的技术审核人员的微博和博客也是一个思想和灵感经常的来源,我诚恳的推荐并挑出它们。
我同样感谢 Rebecca Murphey (http://rebeccamurphey.com, @rmurphey) 为写作此书时提供的灵感,更重要的是,继续让本书可以在GitHub上和通过O'Reilly获得。
最后,我也感谢我的好妻子,在我整理这本出版物时的不遗余力的支持。
本书同时面向初学者和中级开发者,因此假设读者已掌握 Javascript 的基本知识。如果您要了解更多 Javascript 的相关知识,我很乐意为您推荐以下文章:
写出可维护的代码的一个最重要的方面就是在代码中能够注意到重复出现的主题并对其进行优化。设计模式的知识领域是无价的。
在本书的第一部分,我们将探索那些真正可以应用于任何编程语言的设计模式的历史和重要性。如果你已经熟悉这段历史,可以直接跳过"什么是模式?"这一章继续阅读。
设计模式可以追溯到早期的一名叫Christopher Alexander的建筑师。他经常会发表一些他在处理设计问题时的经验和如何与建筑和城镇相联系的。有一天,当Alexander使用了一次又一次后,他发现某些设计结构会导致做出的效果是最好的。
在Sara Ishikawa和Murray Silverstein的协作下,Alexander发明了一种可以帮助授权任何人去设计和构建希望的任何规模的模式语言。这在1977年的一篇名为"A Pattern Language"的论文中发表,在后来作为一本完整的精装书发表。
大约30年前,软件工程师开始将Alexander曾写过的原理并入第一版的设计模式,这是一个用来对那些想要改善他们编码技巧的新手开发者的一个指南。要注意,这时设计模式背后的概念实际上已经在编程行业成立以来就有了,虽然不是那么正式的形式。
第一个也是最标志性的关于软件工程的设计模式的正式作品是在1995年一本叫Design Patterns: Elements Of Reusable Object-Oriented Software的书中发表,这是Erich Gamma, Richard Helm, Ralph Johnson和 John Vlissides - 一群被称为Gang of Four(简称GoF)的人写的。
一个模式就是一个可重用的方案,可应用于在软件设计中的常见问题 - 在我们的例子里 - 就是编写JavaScript的web应用程序。模式的另一种解释就是一个我们如何解决问题的模板 - 那些可以在许多不同的情况里使用的模板。
那么理解和熟悉模式为什么是如此的重要?设计模式有以下三点好处:
评论删除后,数据将无法恢复
评论(83)
引用来自“高跟男爵”的评论
这不是文章 也不是书 是精神引用来自“芈_痴”的评论
"单例和静态类不同,因为我们可以退出单例的初始化时间",
" 单例服务作为一个从全局空间的代码实现中隔离出来共享的资源空间是为了提供一个单独的函数访问指针。"
这两个地方的翻译实在是让人迷惑。
第一句中的”退出“应该是“推迟”的笔误吧? 第二句带点机器翻译 style 的翻译为:单例表现为一个共享的资源命名空间,这可以将实现代码从全局命名空间隔离开来,以便能提供单一的函数访问点。
"单例和静态类不同,因为我们可以退出单例的初始化时间",
" 单例服务作为一个从全局空间的代码实现中隔离出来共享的资源空间是为了提供一个单独的函数访问指针。"
这两个地方的翻译实在是让人迷惑。