设计模式,是高阶编程的重要内容。对于一般的Python初学者来说,Python设计模式的实践可能显得难以触及,但对于有更高追求的Python使用者来说,Python设计模式是非常值得学习的知识。本书是少见的关于Python设计模式实战的图书。
作为可复用面向对象软件开发的基础,设计模式集合了很多软件开发领域专家的宝贵经验和良好实践,其重要性不言而喻。但是,学习设计模式的过程并不是一帆风顺的,对于缺乏面向对象开发经验的设计者尤其如此。
就像在游泳池中不能学会海战一样,我们不应该指望理解几个似是而非的例子就可以在实际开发中灵活运用设计模式。学习设计模式好的方式就是在实际的开发中边学边练边体会。《实战Python设计模式:可复用面向对象软件开发实践》利用Python的标准GUI工具包tkinter,通过可执行的示例对23个设计模式逐个进行说明。这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式的利弊,并合理运用设计模式。
对设计模式感兴趣而且希望随学随用的读者通过该书可以快速跨越从理解到运用的门槛;希望学习Python GUI编程的读者可以将书中的示例作为设计和开发的参考;使用Python语言进行图像分析、数据处理工作的读者可以直接以书中的示例为基础,迅速构建自己的系统架构。
目录
第1 章 示例软件介绍 1
1.1 准备工作 1
1.1.1 源代码下载 · 1
1.1.2 安装开发环境 1
1.2 启动 1
1.3 功能说明 2
1.4 功能概要 3
1.4.1 编辑 3
1.4.2 逻辑调试 6
1.4.3 文件管理 6
1.4.4 代码生成 6
第2 章 创建型模式 7
2.1 抽象工厂模式 7
2.1.1 问题说明 7
2.1.2 模式结构 8
2.1.3 示例代码 9
2.1.4 实战运用 12
2.1.5 效果讨论 19
2.1.6 提示和技巧 19
2.2 工厂方法模式 · 19
2.2.1 问题说明 19
2.2.2 模式结构 21
2.2.3 示例代码 22
2.2.4 实战运用 24
2.2.5 效果讨论 26
2.2.6 提示和技巧 26
2.3 原型模式 27
2.3.1 问题说明 27
2.3.2 模式结构 28
2.3.3 示例代码 29
2.3.4 实战运用 30
2.3.5 效果讨论 34
2.3.6 提示和技巧 34
2.4 生成器模式 35
2.4.1 问题说明 35
2.4.2 模式结构 37
2.4.3 示例代码 38
2.4.4 实战运用 42
2.4.5 效果讨论 43
2.4.6 提示和技巧 44
2.5 单例模式 44
2.5.1 问题说明 44
2.5.2 模式结构 45
2.5.3 示例代码 46
2.5.4 实战运用 47
2.5.5 效果讨论 50
2.5.6 提示和技巧 50
2.6 创建型模式小结 50
第3 章 结构型模式 · 52
3.1 组合模式 52
3.1.1 问题说明 52
3.1.2 模式结构 53
3.1.3 示例代码 54
3.1.4 实战运用 57
3.1.5 效果讨论 60
3.1.6 提示和技巧 61
3.2 适配器模式 61
3.2.1 问题说明 61
3.2.2 模式结构 64
3.2.3 示例代码 64
3.2.4 实战运用 66
3.2.5 效果讨论 69
3.2.6 提示和技巧 69
3.3 桥接模式 70
3.3.1 问题说明 70
3.3.2 模式构造 72
3.3.3 示例代码 73
3.3.4 实战运用 76
3.3.5 效果讨论 79
3.3.6 提示和技巧 80
3.4 装饰器模式 80
3.4.1 问题说明 80
3.4.2 模式结构 81
3.4.3 示例代码 82
3.4.4 实战运用 84
3.4.5 效果讨论 87
3.4.6 提示和技巧 88
3.5 代理模式 88
3.5.1 问题说明 88
3.5.2 模式结构 90
3.5.3 示例代码 91
3.5.4 实战运用 94
3.5.5 效果讨论 96
3.5.6 提示和技巧 96
3.6 享元模式 96
3.6.1 问题说明 96
3.6.2 模式结构 97
3.6.3 示例代码 98
3.6.4 实战运用 · 100
3.6.5 效果讨论 · 104
3.6.6 提示和技巧 104
3.7 外观模式 · 104
3.7.1 问题说明 · 104
3.7.2 模式结构 · 106
3.7.3 实战运用 · 106
3.7.4 效果讨论 · 109
3.7.5 提示和技巧 110
3.8 结构型模式小结 110
第4 章 行为模式 111
4.1 职责链模式 111
4.1.1 问题说明 · 111
4.1.2 模式结构 · 113
4.1.3 示例代码 · 113
4.1.4 实战运用 · 115
4.1.5 效果讨论 · 119
4.1.6 提示和技巧 119
4.2 观察者模式 119
4.2.1 问题说明 · 119
4.2.2 模式结构 · 120
4.2.3 示例代码 · 121
4.2.4 实战运用 · 123
4.2.5 效果讨论 · 127
4.2.6 提示和技巧 127
4.3 中介者模式 128
4.3.1 问题说明 · 128
4.3.2 模式结构 · 129
4.3.3 示例代码 · 130
4.3.4 实战运用 · 132
4.3.5 效果讨论 · 133
4.3.6 提示和技巧 134
4.4 策略模式 · 134
4.4.1 问题说明 · 134
4.4.2 模式结构 · 136
4.4.3 示例代码 · 137
4.4.4 实战运用 · 139
4.4.5 效果讨论 · 144
4.4.6 提示和技巧 145
4.5 命令模式 · 145
4.5.1 问题说明 · 145
4.5.2 模式结构 · 146
4.5.3 示例代码 · 148
4.5.4 实战运用 · 150
4.5.5 效果讨论 · 154
4.5.6 提示和技巧 154
4.6 备忘录模式 155
4.6.1 问题说明 · 155
4.6.2 模式结构 · 156
4.6.3 示例代码 · 157
4.6.4 实战运用 · 159
4.6.5 效果讨论 · 161
4.6.6 提示和技巧 161
4.7 模板方法模式 162
4.7.1 问题说明 · 162
4.7.2 模式结构 · 163
4.7.3 示例代码 · 164
4.7.4 实战运用 · 168
4.7.5 效果讨论 · 170
4.7.6 提示和技巧 170
4.8 迭代器模式 171
4.8.1 问题说明 · 171
4.8.2 模式结构 · 172
4.8.3 示例代码 · 173
4.8.4 实战运用 · 176
4.8.5 效果讨论 · 179
4.8.6 提示和技巧 179
4.9 访问者模式 180
4.9.1 问题说明 · 180
4.9.2 模式结构 · 182
4.9.3 示例代码 · 183
4.9.4 实战运用 · 187
4.9.5 效果讨论 · 191
4.9.6 提示和技巧 192
4.10 状态模式 193
4.10.1 问题说明 193
4.10.2 模式结构 194
4.10.3 示例代码 · 195
4.10.4 实战运用 203
4.10.5 效果讨论 206
4.10.6 提示和技巧 206
4.11 解释器模式 · 206
4.11.1 问题说明 206
4.11.2 模式结构 207
4.11.3 示例代码 208
4.11.4 实战运用 214
4.11.5 效果讨论 219
4.11.6 提示和技巧 220
4.12 行为模式小结 220
★学习设计模式的难点在于如何在实际开发中根据使用场景选择适合的模式。为了解决这个问题,该书首先从实际开发场景入手提出设计模式需要解决的问题,接着通过一些典型的简单示例说明设计模式的结构和行为,最后结合实际的开发示例,说明设计模式在产品级软件开发中的运用方法和注意事项。学习该书,可以帮助读者实现设计模式从入门到精通的跨越。
——东北大学软件学院教授、国务院津贴获得者郝培锋
★该书有两个亮点:一,其是面向Python语言的,现在学习Python语言的人很多,而关于如何有效设计Python程序的书却不多;第二,其能够结合一个完整示例PyExecutor,告诉开发者们当面对具体的开发需求时如何参考模式进行有效设计。PyExecutor是一个非常有吸引力的示例,支持对功能模块图的建模、调试和仿真,因此,该书能帮助众多开发者提升他们迫切需要的综合设计能力。期待这本书能够给读者提供一个关于Python设计模式的全面参考。
——火龙果软件工程创始人俎涛