第1章 前述 1
1.1大师 1
1.2成为更优秀的程序员 3
1.2.1刻意训练 4
1.2.2单一关注点 4
1.2.3快速反馈 5
1.2.4自我拓展 5
1.2.5站在巨人的肩膀上 6
1.2.6如何入手 6
1.2.7保持路线正确的能力 7
1.3系统化思考 8
1.4思维模型 8
1.5这项任务的适用工具 9
1.6设计模式的概念 9
1.6.1是什么造就了设计模式 10
1.6.2分类 10
1.7将用到的工具 11
1.8本书的阅读方式 12
1.9配置Python环境 12
1.9.1 Linux环境 12
1.9.2 Mac环境 13
1.9.3 Windows环境 14
1.9.4 VirtualEnv 15
1.10编辑器 16
1.10.1Atom 16
1.10.2 LightTable 16
1.10.3PyCharm 16
1.10.4 Vim 17
1.10.5 Emacs 17
1.10.6 Sublime Text 17
1.11本章小结 18
第2章 单例模式 19
2.1问题 19
2.2进入对象 23
2.3整理 26
2.4练习 29
第3章 原型模式 31
3.1问题 31
3.2迈出第一步之后 31
3.3一个真实游戏的基础 32
3.4实现原型模式 41
3.5浅拷贝与深拷贝的对比 42
3.6浅拷贝 43
3.7处理嵌套结构 43
3.8深拷贝 44
3.9将所学知识用在项目中 45
3.10练习 48
第4章 工厂模式 49
4.1准备开始 49
4.2游戏循环 50
4.3工厂方法 54
4.4抽象工厂 56
4.5本章小结 57
4.6练习 58
第5章 建造者模式 59
5.1反模式 65
5.2练习 70
第6章 适配器模式 71
6.1不要重复自己(DRY) 72
6.2关注点分离 73
6.3样本问题 75
6.3.1类适配器 76
6.3.2对象适配器模式 77
6.3.3鸭子类型 77
6.4在现实环境中实现适配器模式 78
6.5结束语 80
6.6练习 81
第7章 装饰器模式 83
7.1装饰器模式 85
7.1.1闭包 89
7.1.2保留函数的name和doc属性 89
7.2装饰类 92
7.3结束语 94
7.4练习 95
第8章 外观模式 97
8.1 POS示例 97
8.2系统演进 100
8.3使外观模式凸显出来的原因 101
8.4结束语 103
8.5练习 104
第9章 代理模式 105
9.1记忆法 105
9.2代理模式 107
9.2.1远程代理 109
9.2.2虚拟代理 110
9.2.3保护代理 110
9.3结束语 110
9.4练习 110
第10章 责任链模式 113
10.1安装一台WSGI服务器 114
10.2身份验证头信息 115
10.3责任链模式 119
10.4在项目中实现责任链 121
10.5一种更趋Python化的实现 124
10.6结束语 128
10.7练习 129
第11章 命令模式 131
11.1控制turtle 131
11.2命令模式 133
11.3结束语 138
11.4练习 139
第12章 解释器模式 141
12.1特定领域语言 141
12.1.1 DSL的优势 144
12.1.2 DSL的劣势 144
12.1.3组合模式 148
12.1.4使用组合模式的内部DSL实现 149
12.2实现解释器模式 152
12.3结束语 157
12.4练习 158
第13章 迭代器模式 159
13.1迭代器模式的Python内部实现 161
13.1.1 Itertools 166
13.1.2生成器函数 167
13.1.3生成器表达式 169
13.2结束语 169
13.3练习 170
第14章 观察者模式 171
14.1结束语 183
14.2练习 183
第15章 状态模式 185
15.1状态模式 187
15.2结束语 191
15.3练习 191
第16章 策略模式 193
16.1结束语 197
16.2练习 197
第17章 模板方法模式 199
17.1结束语 207
17.2练习 208
第18章访问者模式 209
18.1访问者模式 218
18.2结束语 226
18.3练习 227
第19章 模型-视图-控制器模式 229
19.1模型-视图-控制器概述 232
19.1.1控制器 234
19.1.2模型 234
19.1.3视图 235
19.1.4总述 235
19.2结束语 239
19.3练习 240
第20章 发布-订阅模式 241
20.1分布式消息发送器 246
20.2结束语 248
20.3练习 249
附录 设计模式快速参考 251