基本信息
名称: JavaScript设计模式
作者信息: 作者: 奥斯马尼 (Addy Osmani) [ 中文 pdf ]
简单介绍
通过阅读奥斯马尼的《JavaScript设计模式》,你将学会如何把经典和现代设计模式应用到JavaScript语言中,来编写优美、结构化和可维护的代码。如果想让代码保持高效、更易于管理,并且能同步最新的最佳实践,那么本书正是为你打造的。 本书介绍了很多流行的设计模式,包括Module(模块)模式、Observer(观察者)模式、:Facade(外观)模式和Mediator(中介者)模式;帮助你从现代Web应用程序开发者的角度来了解MVC、MVP、MVVM等现代架构模式的实用性。本书将带领你了解现代模块格式、有效为代码定义名称空间的方法和其他重要主题。
目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
| 第1章 介绍 1 第2章 什么是模式 3 我们每天都在使用模式 4 第3章 模式状态测试、Proto模式及三法则 6 第4章 设计模式的结构 8 第5章 编写设计模式 11 第6章 反模式 13 第7章 设计模式类别 15 第8章 设计模式分类 17 有关类(Class)的要点 17 第9章JavaScript设计模式 20 9.1Constructor(构造器)模式 21 9.1.1对象创建 21 9.1.2基本Constructor(构造器) 23 9.1.3带原型的Constructor(构造器) 24 9.2Module(模块)模式 25 9.2.1对象字面量 25 9.2.2Module(模块)模式 27 9.2.3Module模式变化 31 9.3RevealingModule(揭示模块)模式 36 9.3.1优点 38 9.3.2缺点 38 9.4Singleton(单例)模式 38 9.5Observer(观察者)模式 42 9.5.1Observer(观察者)模式和Publish/Subscribe(发布/订阅)模式的区别 47 9.5.2优点 49 9.5.3缺点 49 9.5.4Publish/Subscribe实现 49 9.6Mediator(中介者)模式 59 9.6.1基本实现 60 9.6.2高级实现 61 9.6.3示例 67 9.6.4优点和缺点 68 9.6.5中介者(Mediator)与观察者(Observer) 69 9.6.6中介者(Mediator)与外观(Facade) 69 9.7Prototype(原型)模式 70 9.8Command(命令)模式 73 9.9Facade(外观)模式 75 有关抽象的要点 78 9.10Factory(工厂)模式 78 9.10.1何时使用Factory模式 81 9.10.2何时不应使用Factory模式 81 9.10.3AbstractFactory(抽象工厂) 81 9.11Mixin模式 82 9.11.1子类化 83 9.11.2Mixin(混入) 84 9.12Decorator(装饰者)模式 88 9.12.1伪经典Decorator(装饰者) 91 9.12.2使用jQuery的装饰者 96 9.12.3优点和缺点 97 9.13Flyweight(享元)模式 98 9.13.1使用Flyweight模式 98 9.13.2Flyweight和共享数据 99 9.13.3实现经典Flyweight(享元) 99 9.13.4转换代码以使用Flyweight(享元)模式 103 9.13.5基本工厂 105 9.13.6管理外部状态 106 9.13.7Flyweight(享元)模式和DOM 107 第10章 JavaScriptMV*模式 112 10.1MVC 112 Smalltalk—80MVC 113 10.2为JavaScript开发人员提供的MVC 114 10.2.1Model(模型) 114 10.2.2View(视图) 116 10.2.3Controller(控制器) 119 10.2.4Spine.js与Backbone.js 120 10.3MVC为我们提供了什么 122 10.4JavaScript中的Smalltalk—80MVC 122 10.4.1深入挖掘 123 10.4.2总结 123 10.5MVP 124 10.5.1Model、View和Presenter 124 10.5.2MVP或MVC? 125 10.5.3MVC、MVP和Backbone.js 126 10.6MVVM 128 10.6.1历史 129 10.6.2Model 129 10.6.3View 130 10.6.4ViewModel 133 10.6.5小结:View和ViewModel 135 10.6.6小结:ViewModel和Model 135 10.7利与弊 135 10.7.1优点 135 10.7.2缺点 136 10.8使用更松散数据绑定的MVVM 136 10.9MVC、MVP与MVVM 141 10.10Backbone.js与KnockoutJS 142 第11章模块化的JavaScript设计模式 144 11.1脚本加载器要点 145 11.2AMD 145 11.2.1模块入门 146 11.2.2使用Dojo的AMD模块 150 11.2.3AMD模块设计模式(Dojo) 151 11.2.4使用jQuery的AMD模块 152 11.2.5AMD总结 155 11.3CommonJS 155 11.3.1入门指南 156 11.3.2使用多个依赖 157 11.3.3支持CommonJS的加载器和框架 158 11.3.4CommonJS适用于浏览器吗? 158 11.3.5延伸阅读 159 11.4AMD和CommonJS:互相竞争,标准同效 159 UMD:用于插件的AMD和CommonJS兼容模块 160 11.5ESHarmony 165 11.5.1具有Imports和Exports的模块 166 11.5.2从远程数据源加载的模块 167 11.5.3模块加载器API 167 11.5.4用于服务器的类CommonJS模块 168 11.5.5具有构造函数、getter和setter的类 168 11.5.6ESHarmony总结 169 11.5.7延伸阅读 170 11.6总结 170 第12章jQuery中的设计模式 171 12.1Composite(组合)模式 171 12.2Adapter(适配器)模式 173 12.3Facade(外观)模式 174 12.4Observer(观察者)模式 177 12.5Iterator(迭代器)模式 180 12.6延迟初始化 181 12.7Proxy(代理)模式 183 12.8Builder(生成器)模式 184 第13章jQuery插件设计模式 187 13.1模式 188 13.2LightweightStart模式 189 延伸阅读 191 13.3完整的WidgetFactory模式 191 延伸阅读 194 13.4嵌套命名空间插件模式 194 延伸阅读 196 13.5自定义事件插件模式(使用WidgetFactory) 196 延伸阅读 198 13.6使用DOM—to—ObjectBridge模式的原型继承 198 延伸阅读 200 13.7jQuery UI Widget Factory Bridge模式 200 延伸阅读 203 13.8使用WidgetFactory的jQuery Mobile Widget 203 13.9RequireJS和jQuery UI Widget Factory 206 13.9.1用法 208 13.9.2延伸阅读 209 13.10全局选项和单次调用可重写选项(最佳选项模式) 209 延伸阅读 211 13.11高可配和高可变的插件模式 211 延伸阅读 213 13.12是什么使插件超越模式 213 13.12.1质量 214 13.12.2代码风格 214 13.12.3兼容性 214 13.12.4可靠性 214 13.12.5性能 214 13.12.6文档 215 13.12.7维护的可能性 215 13.13总结 215 13.14命名空间模式 215 13.15命名空间基础 216 13.15.1单一全局变量 216 13.15.2命名空间前缀 217 13.15.3对象字面量表示法 217 13.15.4嵌套命名空间 221 13.15.5立即调用的函数表达式(IIFE) 222 13.15.6命名空间注入 224 13.16高级命名空间模式 226 13.16.1自动嵌套的命名空间 227 13.16.2依赖声明模式 229 13.16.3深度对象扩展 229 13.16.4推荐 232 第14章 总结 233 附录 参考文献 235
|
亚马逊链接