第一章 大学毕业了怎么办?——设计模式概述1.1 大学毕业了怎么办 1
1.2 什么是设计模式 2
1.3 代码规范 4
1.4 初学代码者常犯的错误 8
1.5 面向对象编程 8
1.6 面向对象 10
1.7 面向对象的特征 11
1.8 面向对象的优势 11
1.9 类、对象、方法和实例变量 13
1.10 继承 14
1.11 接口 15
1.12 UML图 15
第二章 学校招聘会——接口型模式介绍2.1 学校招聘会 21
2.2 接口型模式 21
2.3 接口型模式包括哪些模式 22
2.4 接口和抽象类的区别 22
2.5 接口和委托的区别 27
第三章 我们班来了位新同学——适配器模式3.1 我们班来了位新同学 29
3.2 适配器模式 30
3.3 适配器模式的几个要素 33
3.4 优势和缺陷 33
3.5 何时使用适配器模式 33
3.6 适配器总体上可以分为哪两类 34
3.7 类适配器VS对象适配器 34
3.8 类适配器和对象适配器的哪些不同 36
3.9 日常生活中的适配器 37
3.10 电脑电源适配器 37
第四章 金融危机股票还挣钱?——外观模式4.1 金融危机股票还挣钱 40
4.2 外观模式意图 41
4.3 使用场合 41
4.4 例子 43
4.5 应用外观模式的注意事项 53
第五章 生日礼物——组合模式 55
5.1 生日礼物 55
5.2 组合模式 56
5.3 结构图 56
5.4 组合模式的使用 62
5.5 适用场景 65
5.6 树 65
5.7 组合模式的优点 73
第六章 蜡笔与毛笔——桥接模式 75
6.1 蜡笔与毛笔 75
6.2 桥接模式 78
6.3 与适配器有什么不同 79
6.4 适用情况 80
第七章 击鼓传花——责任型模式 81
7.1 击鼓传花 81
7.2 责任型模式 81
7.3 责任型模式涉及到哪些角色 89
7.4 纯的与不纯的责任链模式 92
7.5 什么情况下使用责任链模式 93
7.6 使用责任链模式的长处和短处 93
7.7 责任链模式的实现 93
第八章 购物车——单体模式 95
8.1 购物车 95
8.2 单体模式 96
8.3 单体模式的实现 96
8.4 单体模式的一般方法 99
8.5 单体模式的不同表现形式 101
8.6 单体对象的同步(单体模式与多线程) 111
8.7 识别单体模式 114
8.8 单体模式和一个所有方法都是静态的工具类之间有什么区别 115
8.9 与单体模式相关的模式 115
8.10 单体模式的应用 115
第九章 放风者与偷窃者——观察者模式9.1 放风者与偷窃者 117
9.2 观察者模式 117
9.3 组成部分 118
9.4 天气预报 118
9.5 观察者模式原理 122
9.6 现实生活中的观察者 122
9.7 事件监听器也是观察者 122
9.8 观察者模式的典型应用 124
9.9 观察者模式的优点 124
9.10 使用情况 124
9.11 我推你拉 125
9.12 圣斗士星矢的状态模式和观察者模式 125
第十章 中介公司——中介者模式 132
10.1 中介公司 132
10.2 中介者模式 132
10.3 中介者模式的组成部分 133
10.4 中介者模式的特点 133
10.5 男人和女人通过媒人约会 134
第十一章 高老庄的故事——代理模式11.1 高老庄的故事 143
11.2 代理模式 144
11.3 代理模式的角色 144
11.4 已注册用户和游客的权限 147
11.5 代理分类 149
11.6 几种常见的代理模式 157
11.7 动态代理类 158
11.8 代理模式使用原因和应用方面 160
11.9 代理模式的作用 161
11.10 秘书-局长 161
第十二章 包子——享元模式 164
12.1 包子 164
12.2 享元模式 164
12.3 享元模式原理 165
12.4 享元模式设计初衷 166
12.5 咖啡外卖店 166
12.6 享元模式特征 169
12.7 适用性 171
12.8 为什么使用享元模式 171
12.9 如何使用享元模式 172
12.10 享元模式的优缺点 174
12.11 Flyweight模式在XML等数据源中应用 174
第十三章 可恶的皇帝——构造型模式13.1 可恶的皇帝 180
13.2 构造器 181
13.3 使用构造器中的注意事项 183
13.4 理解构造器——构造器和方法的区别 184
第十四章 汽车组装——生成器模式 188
14.1 汽车组装 188
14.2 生成器模式 188
14.3 房屋 189
14.4 为何使用生成器模式 192
14.5 如何使用生成器模式 192
14.6 生成器模式的应用 194
14.7 汽车制造 194
14.8 生成器模式适用场景 203
第十五章 运动协会——工厂方法模式15.1 运动协会 204
15.2 工厂方法模式 205
15.3 工厂方法模式角色 205
15.4 为何使用 208
15.5 为什么工厂模式是如此常用 208
15.6 为什么说代码很难看 209
15.7 简单工厂模式与工厂方法模式大PK 209
第十六章 麦当劳的鸡腿——抽象工厂模式16.1 麦当劳的鸡腿 215
16.2 抽象工厂模式 215
16.3 抽象工厂模式的角色 217
16.4 抽象工厂模式的使用 218
16.5 抽象工厂模式的适用 218
16.6 抽象工厂模式的优点和缺点 218
16.7 抽象工厂模式是为了解决什么问题的呢?给了我们怎样的设计思路 219
16.8 “工厂模式”与“抽象工厂模式”的区别 220
16.9 奥迪audi车 221
第十七章 兰州拉面馆——原型模式 228
17.1 兰州拉面馆 228
17.2 原型模式 228
17.3 原型模式应如何使用 229
17.4 为什么需要原型模式 231
17.5 原型模式的优点和缺点 231
17.6 原型模式满足了哪些面向对象的设计原则 231
17.7 原型模式实现要点 232
17.8 原型模式适用性 232
17.9 克隆对象分为浅拷贝和深拷贝 232
第十八章 月光宝盒——备忘录模式 239
18.1 月光宝盒 239
18.2 备忘录模式 239
18.3 使用备忘录模式的原因 240
18.4 备忘录模式适用的情况举例 240
18.5 “月光宝盒”备忘录模式的组成部分 241
18.6 备忘录模式适用情况 243
18.7 备忘录模式的实现 244
18.8 备忘录角色的作用 248
18.9 备忘录模式与命令模式的区别 249
第十九章 儿子的功课——操作型模式19.1 儿子的功课 250
19.2 操作型模式 250
19.3 要点 251
19.4 操作和方法 251
19.5 签名 252
19.6 异常 252
19.7 算法和多态性 253
第二十章 订单处理——模板方法模式20.1 订单处理 255
20.2 模板方法模式 255
20.3 模板方法模式结构 257
20.4 模板方法模式的目的 258
20.5 模板方法模式的缺陷 259
20.6 模板方法模式与控制反转 261
20.7 模板方法模式与开闭原则 262
20.8 模板方法模式与对象的封装性 262
20.9 模板方法模式与勾子方法(hookMethod) 263
20.10 模板方法模式与策略模式 266
20.11 支持在屏幕上绘图的类View 267
第二十一章 金融危机何时休——状态模式21.1 金融危机何时休 270
21.2 状态模式 271
21.3 状态模式的角色 271
21.4 状态模式的特征 272
21.5 状态模式优点 272
21.6 状态模式实质 273
21.7 状态模式和策略模式的比较 273
21.8 何时使用状态模式 274
21.9 是否使用状态模式 274
21.10 如何使用状态模式 276
第二十二章 还钱——策略模式 279
22.1 还钱 279
22.2 策略模式 279
22.3 策略模式涉及的角色 280
22.4 购物车系统 283
22.5 策略模式的优点、缺点 288
22.6 使用场合 288
22.7 实现步骤 288
22.8 策略模式——状态模式模版模式的区别 289
22.9 策略模式的应用 290
22.10 简单的模拟鸭子应用学习 292
第二十三章 饭店点菜——命令模式 298
23.1 饭店点菜 298
23.2 命令模式 298
23.3 命令模式涉及到哪些角色 299
23.4 Struts中Action的使用 299
23.5 Undo、事务及延伸 301
23.6 命令模式优点 302
23.7 命令模式的适用环境 302
23.8 Command模式应用场景 306
23.9 命令模式的实现 307
23.10 命令模式的功能,好处,或者说为什么使用命令模式 309
23.11 命令模式与其它模式的配合使用 311
23.12 足球 312
第二十四章 苹果汁——解释器模式 316
24.1 苹果汁 316
24.2 解释器模式 316
24.3 解释器模式的组成 317
24.4 解释器模式的优缺点 317
24.5 解释器模式适用性 318
24.6 解释器模式参与者 318
24.7 解释器模式效果 319
24.8 加减乘除 319
第二十五章 多功能的手机——扩展型模式25.1 多功能的手机 324
25.2 扩展型模式 325
25.3 扩展模式指南 326
25.4 扩展现有对象类 326
第二十六章 三明治——装饰器模式 327
26.1 三明治 327
26.2 装饰器模式 328
26.3 装饰器模式的结构 333
26.4 装饰器模式的特征 334
26.5 装饰器模式优点和缺点 334
26.6 模式的简化 334
26.7 为什么使用Decorator 337
26.8 如何使用装饰器模式 337
26.9 装饰器模式与适配器模式的区别 341
第二十七章 老公,有钱不?——迭代器模式27.1 老公,有钱不 343
27.2 迭代器模式 344
27.3 迭代器模式的角色 344
27.4 适用情况 345
27.5 实现自己的迭代器 346
27.6 用Iterator模式实现遍历集合 346
27.7 迭代器模式的实现方式 347
27.8 植树 349
第二十八章 指挥工人工作——访问者模式28.1 指挥工人工作 354
28.2 访问者模式 355
28.3 访问者模式的角色 355
28.4 在什么情况下应当使用访问者模式 356
28.5 访问者模式的缺点 356
28.6 visitor模式准备 356
第二十九章 大学生毕业3条出路:学、仕、商——设计模式总结29.1 大学生毕业3条出路:学、仕、商 362
29.2 设计模式总结 363
29.3 23种设计模式的个人见解 365
附录:面向对象基础 374