第1章 设计模式概述 1
1.1 设计模式简介 2
1.2 预备知识 2
1.2.1 接口和抽象类 2
1.2.2 反射 4
模式实践练习 10
第2章 单例模式 11
2.1 问题的提出 12
2.2 单例模式 12
2.3 单例模式的实现方式 12
2.4 应用示例 14
模式实践练习 20
第3章 工厂模式 21
3.1 关键角色 22
3.2 简单工厂 23
3.2.1 代码示例 23
3.2.2 代码分析 24
3.2.3 语义分析 24
3.3 工厂 25
3.3.1 代码示例 25
3.3.2 代码分析 26
3.4 抽象工厂 27
3.4.1 代码示例 28
3.4.2 代码分析 29
3.4.3 典型模型语义分析 29
3.4.4 其他情况 29
3.5 应用示例 32
3.6 自动选择工厂 37
模式实践练习 38
第4章 生成器模式 39
4.1 问题的提出 40
4.2 生成器模式 41
4.3 深入理解生成器模式 44
4.4 应用示例 46
模式实践练习 58
第5章 原型模式 59
5.1 问题的提出 60
5.2 原型模式 60
5.3 原型复制具体实现方法 61
5.3.1 利用构造函数方法 61
5.3.2 利用Cloneable接口方法 63
5.3.3 利用Serializable序列化接口方法 65
5.4 应用示例 67
模式实践练习 69
第6章 责任链模式 70
6.1 问题的提出 71
6.2 责任链设计模式 71
6.3 反射的作用 73
6.4 回调技术 75
模式实践练习 79
第7章 命令模式 80
7.1 问题的提出 81
7.2 命令模式 81
7.3 深入理解命令模式 83
7.3.1 命令集管理 83
7.3.2 加深命令接口定义的理解 85
7.3.3 命令模式与JDK事件处理 86
7.3.4 命令模式与多线程 90
7.4 应用示例 92
模式实践练习 99
第8章 迭代器模式 100
8.1 问题的提出 101
8.2 迭代器模式 103
8.3 应用示例 104
模式实践练习 109
第9章 访问者模式 110
9.1 问题的提出 111
9.2 访问者模式 111
9.3 深入理解访问者模式 113
9.4 应用示例 119
模式实践练习 128
第10章 中介者模式 129
10.1 问题的提出 130
10.2 中介者模式 130
10.3 应用示例 133
模式实践练习 139
第11章 备忘录模式 140
11.1 问题的提出 141
11.2 备忘录设计模式 143
11.3 应用示例 146
模式实践练习 151
第12章 观察者模式 152
12.1 问题的提出 153
12.2 观察者模式 153
12.3 深入理解观察者模式 155
12.4 JDK中的观察者设计模式 160
12.5 应用示例 163
模式实践练习 172
第13章 状态模式 173
13.1 问题的提出 174
13.2 状态模式 174
13.3 深入理解状态模式 175
13.4 应用示例 180
模式实践练习 191
第14章 策略模式 192
14.1 问题的提出 193
14.2 策略模式 193
14.3 深入理解Context 195
14.4 应用示例 198
模式实践练习 202
第15章 模板方法模式 203
15.1 问题的提出 204
15.2 方法模板 204
15.2.1 自定义方法模板 204
15.2.2 JDK方法模板 206
15.3 流程模板 208
15.4 应用示例 210
模式实践练习 213
第16章 解释器模式 214
16.1 问题的提出 215
16.2 解释器模式 215
16.2.1 文法规则和抽象语法树 215
16.2.2 解释器模式 216
16.3 应用示例 220
模式实践练习 224
第17章 享元模式 225
17.1 问题的提出 226
17.2 享元模式 226
17.3 系统中的享元模式 232
模式实践练习 234
第18章 适配器模式 235
18.1 问题的提出 236
18.2 适配器模式 236
18.2.1 对象适配器 236
18.2.2 类适配器 238
18.3 默认适配器 238
18.4 应用示例 240
模式实践练习 244
第19章 组合模式 246
19.1 问题的提出 247
19.2 组合模式 248
19.3 深入理解组合模式 250
19.3.1 其他常用操作 250
19.3.2 节点排序 252
19.4 应用示例 252
模式实践练习 264
第20章 代理模式 265
20.1 模式简介 266
20.2 虚拟代理 267
20.3 远程代理 272
20.3.1 RMI通信 272
20.3.2 RMI代理模拟 275
20.4 计数代理 277
20.4.1 动态代理的成因 279
20.4.2 自定义动态代理 279
20.4.3 JDK动态代理 282
模式实践练习 284
第21章 桥接模式 285
21.1 问题的提出 286
21.2 桥接模式 286
21.3 深入理解桥接模式 289
21.4 应用示例 292
模式实践练习 301
第22章 装饰器模式 302
22.1 问题的提出 303
22.2 装饰器模式 303
22.3 深入理解装饰器模式 305
22.3.1 具体构件角色的重要性 305
22.3.2 JDK中的装饰器模式 306
22.4 应用示例 309
模式实践练习 320
第23章 外观模式 321
23.1 问题的提出 322
23.2 外观模式 322
23.3 应用示例 323
模式实践练习 329
参考文献 330