标题：软件秘笈：设计模式那点事
基本信息
  软件秘笈：设计模式那点事作者：郑阿奇(作者)
出版社: 电子工业出版社; 第1版 (2011年11月1日) 
丛书名: 魅力·实践·发现 
页数: 628页 
ISBN: 9787121147821
内容简介
本书在第1章软件设计模式概述后，从第2章到第24章诠释23个软件设计模式。每一种都以一个生活故事开始，然后是模式定义、模式分析、模式实现、设计原则和使用场合。模式实现通过Eclipse中的Java工程展开，采用软件编程诠释设计模式故事中的情节和操作，非常有趣。在这个基础上，总结该软件设计模式的设计原则，最后提出使用场合。第25章对各种软件设计模式进行系统总结，第26章是各种软件设计模式综合应用。
目录
目 录
1 设计模式概述 1
1.1 计算机软件的发展现状 2
1.2 引入设计模式的必要性 2
1.3 软件设计遵循的基本原则 3
1.3.1 高内聚、低耦合 3
1.3.2 面向抽象编程 3
1.3.3 多用组合少用继承 4
1.3.4 “开-闭”原则 4
1.4 设计模式概述 4
1.4.1 什么是设计模式 4
1.4.2 为什么需要设计模式 5
1.4.3 如何正确应用设计模式 5
1.5 设计模式的分类 5
1.5.1 创建型模式 6
1.5.2 结构型模式 6
1.5.3 行为型模式 6
1.6 学会归纳和总结 7
第一部分 创建型模式
2 曹操献刀：工厂方法模式 11
2.1 三国故事之曹操献刀 12
2.2 模式定义 13
2.3 故事中的模式分析 13
2.3.1 故事中的角色 13
2.3.2 抽象化分析方法 14
2.3.3 工厂方法模式的静态建模 15
2.4 故事的工厂方法模式实现 17
2.4.1 建立产品 17
2.4.2 建立工厂 19
2.4.3 故事情节的历史重现 21
2.4.4 用八星宝刀来考验模式 22
2.5 设计原则 25
2.6 使用场合 28
2.7 本章要点 29
3 肯德基：抽象工厂模式 31
3.1 发生在肯德基的故事 32
3.2 模式定义 33
3.3 故事中的模式分析 33
3.3.1 故事中的角色 33
3.3.2 抽象化分析 34
3.3.3 抽象工厂模式的静态建模 35
3.4 故事的抽象工厂模式实现 36
3.4.1 抽象食物的建立 36
3.4.2 建立不同食物的抽象基类 37
3.4.3 创建具体的食物 40
3.4.4 建立工厂 43
3.4.5 创建客户类 45
3.4.6 故事情节的展现 48
3.5 设计原则 49
3.6 使用场合 50
3.7 本章要点 53
4 手机套餐：建造者模式 54
4.1 手机套餐 55
4.2 模式定义 56
4.3 故事中的模式分析 56
4.3.1 角色分析 56
4.3.2 建造者模式的静态建模 57
4.4 模式实现 58
4.4.1 创建产品——手机套餐 59
4.4.2 建立抽象建造者 61
4.4.3 建立具体建造者 62
4.4.4 创建指导者 65
4.4.5 让客户订购手机套餐 66
4.4.6 如何简化建造者实现 68
4.5 设计原则 68
4.6 使用场合 70
4.7 本章要点 73
5 大学生初入社会：原型模式 75
5.1 大学生初入社会 76
5.2 模式定义 77
5.3 大学生故事的模式分析 78
5.3.1 故事情节分析 78
5.3.2 原型模式的静态建模 78
5.4 大学生故事的原型模式实现 80
5.4.1 原型的建立 81
5.4.2 创建生成原型对象的工厂 84
5.4.3 大学生初入社会的生活展现 86
5.5 设计原则 88
5.6 使用场合 95
5.7 本章要点 96
6 课堂上互动：单例模式 98
6.1 课堂上发生的故事 99
6.2 模式定义 100
6.3 模式分析 101
6.4 模式实现 102
6.4.1 实现一：使用同步线程安全创建单例对象 102
6.4.2 实现二：创建一个类全局对象实例作为单例对象 106
6.4.3 提高：多例模式实现 107
6.5 设计原则 112
6.6 使用场合 112
6.7 本章要点 114
第二部分 结构型模式
7 电源转换：适配器模式 117
7.1 生活中的适配器 118
7.2 模式定义 118
7.3 模式分析 119
7.3.1 适配器中的角色 119
7.3.2 静态建模 119
7.4 模式实现 120
7.4.1 抽象电源建立 121
7.4.2 创建220V电源 122
7.4.3 创建12V电源 123
7.4.4 测试220V电源和12V电源 125
7.4.5 对象适配器实现 126
7.4.6 类适配器模式实现 129
7.5 设计原则 132
7.6 使用场合 133
7.7 本章要点 135
8 开关与电灯：桥接模式 137
8.1 开关与电灯 138
8.2 模式定义 139
8.3 一般化分析 139
8.4 一般化实现 140
8.4.1 建立抽象开关 141
8.4.2 电灯实现 142
8.4.3 客户端测试 145
8.4.4 对于扩展功能的思考 146
8.5 桥接模式分析方法 147
8.6 开关与电灯的桥接模式实现 147
8.6.1 创建电灯接口 147
8.6.2 创建开关 148
8.6.3 电灯实现 151
8.6.4 客户端测试 153
8.7 设计原则 155
8.8 使用场合 156
8.9 本章要点 157
9 公司层级结构：组合模式 159
9.1 公司层级结构 160
9.2 模式定义 160
9.3 一般化分析 161
9.4 一般化实现 162
9.4.1 创建普通员工 162
9.4.2 创建管理者 164
9.4.3 客户端测试 168
9.4.4 系统结构的思考 171
9.5 组合模式分析方法 171
9.6 公司结构的组合模式实现 172
9.6.1 建立员工抽象 172
9.6.2 创建管理者 175
9.6.3 创建普通员工 177
9.6.4 客户端测试 179
9.7 设计原则 182
9.8 使用场合 183
9.9 本章要点 184
10 染色馒头：装饰者模式 186
10.1 染色馒头事件 187
10.2 模式定义 188
10.3 一般化分析 188
10.4 一般化实现 189
10.4.1 创建馒头接口 189
10.4.2 正常馒头 190
10.4.3 染色馒头 193
10.4.4 甜馒头 195
10.4.5 如何生产甜玉米馒头 199
10.5 装饰者模式分析方法 199
10.6 染色馒头的装饰者模式实现 200
10.6.1 创建抽象装饰者 200
10.6.2 创建装饰者 202
10.6.3 生产甜玉米馒头 204
10.7 设计原则 206
10.8 使用场合 207
10.9 本章要点 209
11 美食天下：外观模式 211
11.1 美食天下 212
11.2 模式定义 213
11.3 一般化分析 214
11.4 一般化实现 214
11.4.1 创建糖醋排骨接口 214
11.4.2 糖醋排骨实现 215
11.4.3 客户端测试 216
11.5 外观模式分析方法 218
11.5.1 让厨师为我们做菜 218
11.5.2 外观模式的静态建模 218
11.6 糖醋排骨的外观模式实现 219
11.6.1 建立外观门面 219
11.6.2 客户端测试 221
11.7 设计原则 222
11.8 使用场合 224
11.9 本章要点 227
12 五子棋游戏：享元模式 229
12.1 五子棋游戏 230
12.2 模式定义 231
12.3 模式分析 231
12.3.1 五子棋游戏分析 231
12.3.2 静态建模 232
12.4 模式实现 233
12.4.1 创建抽象棋子 233
12.4.2 棋子实现 234
12.4.3 创建棋子工厂 234
12.4.4 客户端测试 236
12.4.5 如何实现棋子的位置 238
12.4.6 测试棋子的外蕴状态 242
12.5 设计原则 244
12.6 使用场合 245
12.7 本章要点 247
13 红酒经销：代理模式 249
13.1 红酒代理商 250
13.2 模式定义 250
13.3 模式分析 251
13.3.1 消费者购买行为分析 251
13.3.2 静态建模 252
13.4 模式实现 252
13.4.1 创建红酒生产厂商 253
13.4.2 到红酒工厂购买红酒 254
13.4.3 创建红酒代理商 255
13.4.4 到红酒代理商处购买红酒 257
13.5 设计原则 258
13.6 使用场合 259
13.7 本章要点 265
第三部分 行为型模式
14 学生生病了：责任链模式 269
14.1 学生生病了 270
14.2 模式定义 271
14.3 普通抽象化分析 271
14.3.1 学生请假流程分析 271
14.3.2 抽象化静态建模 272
14.4 普通抽象化实现 273
14.4.1 学生请假实现 273
14.4.2 创建抽象请假消息处理者 275
14.4.3 请假处理者具体实现 277
14.4.4 客户端测试 279
14.4.5 如何面对变化 282
14.4.6 使用外观封装变化部分 283
14.5 责任链模式分析方法 288
14.5.1 如何实现消息传递 288
14.5.2 责任链模式静态建模 288
14.6 请假流程的责任链模式实现 289
14.6.1 抽象化修改 289
14.6.2 完善具体消息处理者 291
14.6.3 在外观中设置消息处理责任链 292
14.6.4 客户端测试 296
14.7 设计原则 296
14.8 使用场合 297
14.9 本章要点 299
15 邮局：命令模式 301
15.1 生活中的邮局 302
15.2 模式定义 303
15.3 模式分析 303
15.3.1 邮局例子分析 303
15.3.2 静态建模 303
15.4 模式实现 304
15.4.1 创建消息接收者 305
15.4.2 创建中间角色邮局 305
15.4.3 创建消息发送者 307
15.4.4 让邮局开始工作 308
15.4.5 优化我们的设计 310
15.5 设计原则 312
15.6 使用场合 313
15.7 本章要点 316
16 创建自己的语言：解释器模式 318
16.1 创建自己的语言解释器 319
16.2 模式定义 320
16.3 模式分析 320
16.3.1 “myida”语言分析 320
16.3.2 “myida”语言解释器原理 321
16.4 模式实现 323
16.4.1 创建上下文环境 323
16.4.2 创建解析表达式 326
16.4.3 让“myida”语言解释器开始工作 336
16.5 设计原则 338
16.6 使用场合 339
16.7 本章要点 341
17 循环遍历：迭代器模式 343
17.1 让迭代器代替for循环 344
17.2 模式定义 345
17.3 模式分析 345
17.3.1 如何遍历集合对象 345
17.3.2 迭代器模式静态建模 346
17.4 模式实现 347
17.4.1 人员信息实现 348
17.4.2 人员集合实现 349
17.4.3 迭代器实现 352
17.4.4 让迭代器遍历集合对象 354
17.4.5 迭代器如何面对变化 357
17.4.6 客户端发生哪些变化 360
17.5 设计原则 362
17.6 使用场合 362
17.7 本章要点 364
18 多人聊天室：中介者模式 366
18.1 多人聊天室 367
18.2 模式定义 368
18.3 模式分析 368
18.3.1 多人聊天室结构分析 368
18.3.2 静态建模 369
18.4 模式实现 370
18.4.1 创建用户接口 370
18.4.2 创建中介者 371
18.4.3 创建用户 373
18.4.4 运行多人聊天室 377
18.5 设计原则 380
18.6 使用场合 380
18.7 本章要点 382
19 过关类游戏：备忘录模式 384
19.1 过关类游戏 385
19.2 模式定义 385
19.3 模式分析 386
19.3.1 备忘录模式特点 386
19.3.2 备忘录模式静态建模 386
19.4 模式实现 387
19.4.1 白箱备忘录模式实现 388
19.4.2 黑箱备忘录模式实现 396
19.5 设计原则 404
19.6 使用场合 405
19.7 本章要点 407
20 高温预警：观察者模式 409
20.1 高温预警系统 410
20.2 模式定义 411
20.3 模式分析 411
20.3.1 高温预警过程分析 411
20.3.2 静态建模 411
20.4 模式实现 412
20.4.1 创建抽象角色 413
20.4.2 具体主题实现 415
20.4.3 具体观察者实现 419
20.4.4 让系统开始运行 421
20.5 设计原则 423
20.6 使用场合 423
20.7 本章要点 426
21 文档编辑模式切换：状态模式 428
21.1 文档编辑器中的模式切换 429
21.2 模式定义 430
21.3 模式分析 430
21.4 模式实现 431
21.4.1 创建空白的上下文环境 431
21.4.2 创建状态接口 431
21.4.3 完善上下文内容 433
21.4.4 创建具体状态 434
21.4.5 客户端测试 437
21.5 设计原则 440
21.6 使用场合 440
21.7 本章要点 442
22 商场促销：策略模式 443
22.1 商场促销商品 444
22.2　模式定义 445
22.3 模式分析 445
22.3.1 商品促销中的策略分析 445
22.3.2 策略模式静态建模 446
22.4 模式实现 446
22.4.1 创建策略接口 447
22.4.2 创建具体策略 448
22.4.3 创建上下文环境 450
22.4.4 消费者购物消费 451
22.4.5 策略模式与条件判断的比较 454
22.5 设计原则 456
22.6 使用场合 456
22.7 本章要点 459
23 生活行为：模板方法模式 461
23.1 每日的生活行为 462
23.2 模式定义 463
23.3 模式分析 463
23.3.1 生活行为分析 463
23.3.2 静态建模 464
23.4 模式实现 465
23.4.1 建立算法骨架 465
23.4.2 创建具体实现 467
23.4.3 客户端测试 469
23.5 设计原则 471
23.6 使用场合 472
23.7 本章要点 475
24 公司层级结构：访问者模式 477
24.1 公司层级结构 478
24.2 模式定义 479
24.3 模式分析 479
24.3.1 组合模式回顾 479
24.3.2 访问者模式分析 480
24.3.3 访问者模式静态建模 481
24.4 模式实现 483
24.4.1 员工实现 483
24.4.2 访问者实现 488
24.4.3 让员工接收访问者 490
24.4.4 客户端测试 491
24.4.5 扩展的思考 494
24.5 设计原则 498
24.6 使用场合 499
24.7 本章要点 502
25 设计模式总结 504
25.1 为什么学习设计模式 505
25.1.1 让工作变得轻松 505
25.1.2 让程序变得优雅 507
25.1.3 要学会设计原则 507
25.2 设计模式六大原则 509
25.2.1 “开-闭”原则（OCP） 509
25.2.2 单一职责原则（SRP） 519
25.2.3 依赖倒置原则（DIP） 527
25.2.4 接口隔离原则（ISP） 536
25.2.5 里氏替换原则（LSP） 543
25.2.6 迪米特法则（LoD） 544
25.3 勤于思考，善于总结 553
25.3.1 专心、用心、信心 553
25.3.2 做一个有思想的人 554
25.4 实践出真知 554
26 MVC设计实践 556
26.1 让你的思维活跃起来 557
26.2 如何设计MVC架构 557
26.3 第一个MVC框架——Joker MVC 558
26.3.1 环境介绍 558
26.3.2 MVC起航 558
26.3.3 Joker MVC架构分析 563
26.3.4 Joker MVC架构实现 566
26.3.5 发布joker-1.0部署测试 599