内容简介
通过实践练习《Python设计模式》介绍的设计模式的项目,有助于读者深刻理解并掌握这些项目,从而成为更优秀、更高效的程序员。在书中,读者将学习如何编写优雅的“Python式”代码来解决常见的编程问题。通过识别出有助于应对特定问题或情形的设计模式,体会到设计方面的思维模式。
主要特色:
编写更干净的代码
提升程序员的开发效率
编写更为“Python式”的代码
解决更大的难题
发现适用于常见问题的优解决方案,以独特的Python设计模式实现它
作者简介
WesselBadenhorst非常热衷于研究获取专家级能力的过程,尤其是编程领域的专家级能力。他获得了计算机科学的学士学位,并且在真实的应用场景中积累了大量经验。目录
第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《Python设计模式》的阅读方式12
1.9配置Python环境12
1.9.1Linux环境12
1.9.2Mac环境13
1.9.3Windows环境14
1.9.4VirtualEnv15
1.10编辑器16
1.10.1Atom16
1.10.2LightTable16
1.10.3PyCharm16
1.10.4Vim17
1.10.5Emacs17
1.10.6SublimeText17
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.1POS示例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控制turtle131
11.2命令模式133
11.3结束语138
11.4练习139
第12章解释器模式141
12.1特定领域语言141
12.1.1DSL的优势144
12.1.2DSL的劣势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.1Itertools166
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
前言/序言
近年来,由于人工智能的兴起,Python逐渐从科学计算领域进入普通大众的视野,其使用率一直呈线性增长。Python在设计上坚持了清晰划一的风格,这使得它成为一门易读、易维护,并受到大量用户欢迎、用途广泛的语言。Python的设计哲学是优雅、明确、简单,追求“用一种方法,最好是只有一种方法来做一件事”。有鉴于此,设计模式与Python的结合就变得顺理成章了。
设计模式是经过总结、优化的,可用于解决我们经常会碰到的一些编程问题的可重用解决方案。一个设计模式并不像一个类或一个库那样能够直接作用于我们的代码。设计模式更高级,它是一种必须在特定情形下实现的方法模板。设计模式不会绑定具体的编程语言。一个好的设计模式应该能够用大部分编程语言实现。最重要的是,设计模式也是一把双刃剑,如果设计模式被用在不恰当的情形下将造成灾难,进而带来无穷的麻烦。然而,如果设计模式在正确的时间被用在正确的地方,那么它将是我们的救星。
《Python设计模式》中的每一章都是以一个引用句子作为开头的,如果读者能明白其背景,那么一定会对《Python设计模式》作者的这一小情趣报以会心一笑,谁说钻研技术的人就毫无情趣了?译者对于这些短句子也是详细了解了其来源和背景,并且对作者在相应章节中放入对应句子的意义深以为然。为了让读者享受到这一乐趣,在翻译《Python设计模式》的过程中,译者并没有给出这些句子的详细出处和历史背景,这些内容就留待读者自行探究吧。毕竟,探索的过程,其本身的意义要远远大于平铺直叙的结果所能带来的影响。
《Python设计模式》从设计模式的角度,结合各个示例深入浅出地讲解了各种设计模式在Python中的实现,为读者描述了Python式设计模式的应有结构以及应该避免的误区。所以《Python设计模式》的高度较一般的Python开发类书籍要高,同时也要求读者具备一定的软件开发和架构经验,否则就可能无法很好地理解《Python设计模式》中讲解的内容。相信在阅读完《Python设计模式》之后,读者对于在Python中实现各种设计模式的处理一定会深有感悟。正如作者在书中所言,作为程序员,我们应该追求持续不断的进步。学无止境,大家共勉!
在此要特别感谢清华大学出版社的编辑,在《Python设计模式》翻译过程中他们提供了颇有助益的帮助,没有他们的热情付出,《Python设计模式》将难以顺利付梓。
《Python设计模式》主要章节由蒲成翻译,参与翻译的还有何东武、李鹏、李文强、林超、刘洋洋、茆永锋、潘丽臣和王滨。由于译者水平有限,难免会出现一些错误或翻译不准确的地方,如果有读者能够指出并勘正,译者将不胜感激。
译者