第1章 介紹 1
第2章 什麼是模式 3
我們每天都在使用模式 4
第3章 模式狀態測試、proto模式及三法則 6
第4章 設計模式的結構 8
第5章 編寫設計模式 11
第6章 反模式 13
第7章 設計模式類彆 15
第8章 設計模式分類 17
有關類(class)的要點 17
第9章 javascript設計模式 20
9.1 constructor(構造器)模式 21
9.1.1 對象創建 21
9.1.2 基本constructor(構造器) 23
9.1.3 帶原型的constructor(構造器) 24
9.2 module(模塊)模式 25
9.2.1 對象字麵量 25
9.2.2 module(模塊)模式 27
9.2.3 module模式變化 31
.9.3 revealing module(揭示模塊)模式 36
9.3.1 優點 38
9.3.2 缺點 38
9.4 singleton(單例)模式 38
9.5 observer(觀察者)模式 42
9.5.1 observer(觀察者)模式和publish/subscribe(發布/訂閱)模式的區彆 47
9.5.2 優點 49
9.5.3 缺點 49
9.5.4 publish/subscribe實現 49
9.6 mediator(中介者)模式 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.7 prototype(原型)模式 70
9.8 command(命令)模式 73
9.9 facade(外觀)模式 75
有關抽象的要點 78
9.10 factory(工廠)模式 78
9.10.1 何時使用factory模式 81
9.10.2 何時不應使用factory模式 81
9.10.3 abstract factory(抽象工廠) 81
9.11 mixin模式 82
9.11.1 子類化 83
9.11.2 mixin(混入) 84
9.12 decorator(裝飾者)模式 88
9.12.1 僞經典decorator(裝飾者) 91
9.12.2 使用jquery的裝飾者 96
9.12.3 優點和缺點 97
9.13 flyweight(享元)模式 98
9.13.1 使用flyweight模式 98
9.13.2 flyweight和共享數據 99
9.13.3 實現經典flyweight(享元) 99
9.13.4 轉換代碼以使用flyweight(享元)模式 103
9.13.5 基本工廠 105
9.13.6 管理外部狀態 106
9.13.7 flyweight(享元)模式和dom 107
第10章 javascript mv*模式 112
10.1 mvc 112
smalltalk-80 mvc 113
10.2 為javascript開發人員提供的mvc 114
10.2.1 model(模型) 114
10.2.2 view(視圖) 116
10.2.3 controller(控製器) 119
10.2.4 spine.js與backbone.js 120
10.3 mvc為我們提供瞭什麼 122
10.4 javascript中的smalltalk-80 mvc 122
10.4.1 深入挖掘 123
10.4.2 總結 123
10.5 mvp 124
10.5.1 model、view和presenter 124
10.5.2 mvp或mvc? 125
10.5.3 mvc、mvp和backbone.js 126
10.6 mvvm 128
10.6.1 曆史 129
10.6.2 model 129
10.6.3 view 130
10.6.4 viewmodel 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.9 mvc、mvp與mvvm 141
10.10 backbone.js與knockoutjs 142
第11章 模塊化的javascript設計模式 144
11.1 腳本加載器要點 145
11.2 amd 145
11.2.1 模塊入門 146
11.2.2 使用dojo的amd模塊 150
11.2.3 amd模塊設計模式(dojo) 151
11.2.4 使用jquery的amd模塊 152
11.2.5 amd總結 155
11.3 commonjs 155
11.3.1 入門指南 156
11.3.2 使用多個依賴 157
11.3.3 支持commonjs的加載器和框架 158
11.3.4 commonjs適用於瀏覽器嗎? 158
11.3.5 延伸閱讀 159
11.4 amd和commonjs:互相競爭,標準同效 159
umd:用於插件的amd和commonjs兼容模塊 160
11.5 es harmony 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.6 es harmony總結 169
11.5.7 延伸閱讀 170
11.6 總結 170
第12章 jquery中的設計模式 171
12.1 composite(組閤)模式 171
12.2 adapter(適配器)模式 173
12.3 facade(外觀)模式 174
12.4 observer(觀察者)模式 177
12.5 iterator(迭代器)模式 180
12.6 延遲初始化 181
12.7 proxy(代理)模式 183
12.8 builder(生成器)模式 184
第13章 jquery插件設計模式 187
13.1 模式 188
13.2 lightweight start模式 189
延伸閱讀 191
13.3 完整的widget factory模式 191
延伸閱讀 194
13.4 嵌套命名空間插件模式 194
延伸閱讀 196
13.5 自定義事件插件模式(使用widget factory) 196
延伸閱讀 198
13.6 使用dom-to-object bridge模式的原型繼承 198
延伸閱讀 200
13.7 jquery ui widget factory bridge模式 200
延伸閱讀 203
13.8 使用widget factory的jquery mobile widget 203
13.9 requirejs和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
· · · · · · (
收起)