新書推薦:
《
中国涉外法治蓝皮书(2024)
》
售價:HK$
98.0
《
黄庭经详解(全2册)
》
售價:HK$
141.6
《
台北故宫博物院典藏大系·绘画卷(全十册)
》
售價:HK$
9784.0
《
姑苏繁华图
》
售價:HK$
684.4
《
人的消逝:从原子弹、互联网到人工智能
》
售價:HK$
103.8
《
想象的共同体--民族主义的起源与散布(增订版)
》
售價:HK$
77.3
《
医学图形图像处理基于Python VTK的实现
》
售價:HK$
166.9
《
山家清供:小楷插图珍藏本 谦德国学文库系列
》
售價:HK$
143.4
|
編輯推薦: |
Python正在迅速扩张其应用领域。*近几年,其应用意义已经令其远不止于仅仅是一种面向对象的脚本化语言。设计模式有助于我们模块式地思考和解决问题,帮助我们收集和分析思维模型。
《Python 设计模式》从设计模式的角度,结合各个示例深入浅出地讲解了各种设计模式在Python 中的实现,为读者描述了Python 式设计模式的应有结构以及应该避免的误区。《Python 设计模式》的高度较一般的Python 开发类书籍要高,要求读者具备一定的软件开发和架构经验,否则就可能无法很好地理解本书中讲解的内容。
|
內容簡介: |
通过实践练习《Python 设计模式》介绍的设计模式的项目,有助于读者深刻理解并掌握这些项目,从而成为更优秀、更高效的程序员。在书中,读者将学习如何编写优雅的Python式代码来解决常见的编程问题。通过识别出有助于应对特定问题或情形的设计模式,体会到设计方面的思维模式。 主要特色: 编写更干净的代码 提升程序员的开发效率 编写更为Python式的代码 解决更大的难题 发现适用于常见问题的*解决方案,以独特的Python设计模式实现它
|
關於作者: |
Wessel Badenhorst非常热衷于研究获取专家级能力的过程,尤其是编程领域的专家级能力。他获得了计算机科学的学士学位,并且在真实的应用场景中积累了大量经验。
|
目錄:
|
第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.1 Atom 16
1.10.2 LightTable 16
1.10.3 PyCharm 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
|
內容試閱:
|
近年来,由于人工智能的兴起,Python逐渐从科学计算领域进入普通大众的视野,其使用率一直呈线性增长。Python在设计上坚持了清晰划一的风格,这使得它成为一门易读、易维护,并受到大量用户欢迎、用途广泛的语言。Python的设计哲学是优雅、明确、简单,追求用一种方法,最好是只有一种方法来做一件事。有鉴于此,设计模式与Python的结合就变得顺理成章了。
设计模式是经过总结、优化的,可用于解决我们经常会碰到的一些编程问题的可重用解决方案。一个设计模式并不像一个类或一个库那样能够直接作用于我们的代码。设计模式更高级,它是一种必须在特定情形下实现的方法模板。设计模式不会绑定具体的编程语言。一个好的设计模式应该能够用大部分编程语言实现。最重要的是,设计模式也是一把双刃剑,如果设计模式被用在不恰当的情形下将造成灾难,进而带来无穷的麻烦。然而,如果设计模式在正确的时间被用在正确的地方,那么它将是我们的救星。
《Python设计模式》中的每一章都是以一个引用句子作为开头的,如果读者能明白其背景,那么一定会对《Python设计模式》作者的这一小情趣报以会心一笑,谁说钻研技术的人就毫无情趣了?译者对于这些短句子也是详细了解了其来源和背景,并且对作者在相应章节中放入对应句子的意义深以为然。为了让读者享受到这一乐趣,在翻译《Python设计模式》的过程中,译者并没有给出这些句子的详细出处和历史背景,这些内容就留待读者自行探究吧。毕竟,探索的过程,其本身的意义要远远大于平铺直叙的结果所能带来的影响。
《Python设计模式》从设计模式的角度,结合各个示例深入浅出地讲解了各种设计模式在Python中的实现,为读者描述了Python式设计模式的应有结构以及应该避免的误区。所以《Python设计模式》的高度较一般的Python开发类书籍要高,同时也要求读者具备一定的软件开发和架构经验,否则就可能无法很好地理解《Python设计模式》中讲解的内容。相信在阅读完《Python设计模式》之后,读者对于在Python中实现各种设计模式的处理一定会深有感悟。正如作者在书中所言,作为程序员,我们应该追求持续不断的进步。学无止境,大家共勉!
在此要特别感谢清华大学出版社的编辑,在《Python设计模式》翻译过程中他们提供了颇有助益的帮助,没有他们的热情付出,《Python设计模式》将难以顺利付梓。
《Python设计模式》主要章节由蒲成翻译,参与翻译的还有何东武、李鹏、李文强、林超、刘洋洋、茆永锋、潘丽臣和王滨。由于译者水平有限,难免会出现一些错误或翻译不准确的地方,如果有读者能够指出并勘正,译者将不胜感激。
译者
|
|