《JAVASCRIPT设计模式》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:(美)ROSS HARMES,DUSTIN DIAZ著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2009
  • ISBN:9787115191281
  • 页数:250 页
图书介绍:本书分为两部分介绍JavaScript设计模式。第一部分提供了一个实现具体的设计模式所需要的面向对象特性的基础,主要包括接口、封装和信息隐藏、继承、单体模式等内容。第二部分则专注于各种具体的设计模式及其在JavaScript语言中的应用,主要介绍了了工厂模式、桥接模式、组合模式、门面模式等几种常见的模式。为了让每一章中的示例都尽可能地贴近实际应用,同时列举一些JavaScript程序员最常见的任务,然后运用设计模式使其解决方案变得更模块化、更高效并且更易维护。而其中较为理论化的例子则是用于阐明某些要点。

第一部分 面向对象的JavaScript 2

第1章 富有表现力的JavaScript 2

1.1 JavaScript的灵活性 2

1.2弱类型语言 5

1.3函数是一等对象 5

1.4对象的易变性 6

1.5继承 8

1.6 JavaScript中的设计模式 8

1.7小结 8

第2章 接口 10

2.1什么是接口 10

接口之利 10

接口之弊 11

2.2其他面向对象语言处理接口的方式 11

2.3在JavaScript中模仿接口 13

用注释描述接口 13

用属性检查模仿接口 14

用鸭式辨型模仿接口 16

2.4本书采用的接口实现方法 17

2.5 Interface类 17

Interface类的使用场合 18

Interface类的用法 19

示例:使用Interface类 19

2.6依赖于接口的设计模式 21

2.7小结 22

第3章 封装和信息隐藏 23

3.1信息隐藏原则 23

封装与信息隐藏 23

接口扮演的角色 24

3.2创建对象的基本模式 24

门户大开型对象 25

用命名规范区别私用成员 28

作用域、嵌套函数和闭包 29

用闭包实现私用成员 30

3.3更多高级对象创建模式 32

静态方法和属性 32

常量 35

单体和对象工厂 36

3.4封装之利 36

3.5封装之弊 37

3.6小结 37

第4章 继承 39

4.1为什么需要继承 39

4.2类式继承 39

原型链 40

extend函数 41

4.3原型式继承 43

对继承而来的成员的读和写的不对等性 44

clone函数 46

4.4类式继承和原型式继承的对比 47

4.5继承与封装 47

4.6掺元类 48

4.7示例:就地编辑 49

类式继承解决方案 50

原型式继承解决方案 53

掺元类解决方案 56

4.8继承的适用场合 59

4.9小结 60

第5章 单体模式 61

5.1单体的基本结构 61

5.2划分命名空间 62

5.3用作特定网页专用代码的包装器的单体 64

5.4拥有私用成员的单体 66

使用下划线表示法 66

使用闭包 67

两种技术的比较 69

5.5惰性实例化 70

5.6分支 73

5.7示例:用分支技术创建XHR对象 74

5.8单体模式的适用场合 76

5.9单体模式之利 77

5.10单体模式之弊 77

5.11小结 77

第6章 方法的链式调用 78

6.1调用链的结构 78

6.2设计一个支持方法链式调用的JavaScript库 81

6.3使用回调从支持链式调用的方法获取数据 83

6.4小结 84

第二部分 设计模式 86

第7章 工厂模式 86

7.1简单工厂 86

7.2工厂模式 89

7.3工厂模式的适用场合 91

动态实现 91

节省设置开销 91

用许多小型对象组成一个大对象 92

7.4示例:XHR工厂 92

专用型连接对象 94

在运行时选择连接对象 95

7.5示例:RSS阅读器 97

7.6工厂模式之利 100

7.7工厂模式之弊 100

7.8小结 100

第8章 桥接模式 101

8.1示例:事件监听器 1

8.2桥接模式的其他例子 102

8.3用桥接模式联结多个类 103

8.4示例:构建XHR连接队列 103

添加核心工具 103

添加观察者系统 105

开发队列的基本框架 106

实现队列 108

哪些地方用了桥接模式 112

8.5桥接模式的适用场合 113

8.6桥接模式之利 113

8.7桥接模式之弊 113

8.8小结 114

第9章 组合模式 115

9.1组合对象的结构 115

9.2使用组合模式 115

9.3示例:表单验证 116

汇合起来 121

向FormItem添加操作 121

向层次体系中添加类 121

添加更多操作 123

9.4示例:图片库 124

9.5组合模式之利 127

9.6组合模式之弊 127

9.7小结 127

第10章 门面模式 128

10.1一些你可能已经知道的门面元素 128

10.2 JavaScript库的门面性质 129

10.3用作便利方法的门面元素 129

10.4示例:设置HTML元素的样式 131

10.5示例:设计一个事件工具 132

10.6 实现门面模式的一般步骤 133

10.7门面模式的适用场合 134

10.8门面模式之利 134

10.9门面模式之弊 134

10.10小结 135

第11章 适配器模式 136

11.1适配器的特点 136

11.2适配原有实现 137

11.3示例:适配两个库 137

11.4示例:适配电子邮件API 139

用适配器包装Web邮件API 143

从fooMail转向dedMail 144

11.5适配器模式的适用场合 144

11.6适配器模式之利 145

11.7适配器模式之弊 145

11.8小结 145

第12章 装饰者模式 146

12.1装饰者的结构 146

接口在装饰者模式中的角色 149

装饰者模式与组合模式的比较 150

12.2装饰者修改其组件的方式 150

在方法之后添加行为 150

在方法之前添加行为 151

替换方法 152

添加新方法 153

12.3工厂的角色 156

12.4函数装饰者 158

12.5装饰者模式的适用场合 159

12.6示例:方法性能分析器 159

12.7装饰者模式之利 162

12.8装饰者模式之弊 163

12.9小结 163

第13章 享元模式 164

13.1享元的结构 164

13.2示例:汽车登记 164

内在状态和外在状态 165

用工厂进行实例化 166

封装在管理器中的外在状态 167

13.3管理外在状态 168

13.4示例:Web日历 168

把日期对象转化为享元 170

外在数据保存在哪里 171

13.5示例:工具提示对象 171

未经优化的Tooltip类 171

作为享元的Tooltip 173

13.6保存实例供以后重用 175

13.7享元模式的适用场合 177

13.8实现享元模式的一般步骤 177

13.9享元模式之利 178

13.10享元模式之弊 179

13.11小结 179

第14章 代理模式 180

14.1代理的结构 180

代理如何控制对本体的访问 180

虚拟代理、远程代理和保护代理 183

代理模式与装饰者模式的比较 184

14.2代理模式的适用场合 184

14.3示例:网页统计 184

14.4包装Web服务的通用模式 187

14.5示例:目录查找 189

14.6创建虚拟代理的通用模式 192

14.7代理模式之利 195

14.8代理模式之弊 195

14.9小结 196

第15章 观察者模式 197

15.1示例:报纸的投送 197

推与拉的比较 197

模式的实践 198

15.2构建观察者API 200

投送方法 200

订阅方法 201

退订方法 202

15.3现实生活中的观察者 202

15.4示例:动画 202

15.5事件监听器也是观察者 203

15.6观察者模式的适用场合 204

15.7观察者模式之利 205

15.8观察者模式之弊 205

15.9小结 205

第16章 命令模式 206

16.1命令的结构 206

用闭包创建命令对象 207

客户、调用者和接收者 208

在命令模式中使用接口 208

16.2命令对象的类型 209

16.3示例:菜单项 210

菜单组合对象 211

命令类 213

汇合起来 214

添加更多菜单项 215

16.4示例:取消操作和命令日志 216

使用命令日志实现不可逆操作的取消 220

用于崩溃恢复的命令日志 222

16.5命令模式的适用场合 222

16.6命令模式之利 223

16.7命令模式之弊 223

16.8小结 223

第17章 职责链模式 225

17.1职责链的结构 225

17.2传递请求 230

17.3在现有层次体系中实现职责链 233

17.4事件委托 234

17.5职责链模式的适用场合 234

17.6图片库的进一步讨论 235

用职责链提高组合对象的效率 236

为图片添加标签 237

17.7职责链模式之利 240

17.8职责链模式之弊 240

17.9小结 241

索引 242