新書推薦:
![洛克现代性政治学之根](http://103.6.6.66/upload/mall/productImages/24/30/9787522206912.jpg)
《
洛克现代性政治学之根
》
售價:HK$
109.3
![奥登诗精选](http://103.6.6.66/upload/mall/productImages/24/29/9787559675378.jpg)
《
奥登诗精选
》
售價:HK$
112.7
![《你的名字。》美术画集](http://103.6.6.66/upload/mall/productImages/24/29/9787550057036.jpg)
《
《你的名字。》美术画集
》
售價:HK$
124.2
![北齐书(点校本二十四史修订本 全2册)](http://103.6.6.69/upload/mall/productImages/y24/8/9787101166781.jpg)
《
北齐书(点校本二十四史修订本 全2册)
》
售價:HK$
170.2
![美丽的地球:高山(呈现世界70余座宏伟高山,感受世界的起伏)](http://103.6.6.69/upload/mall/productImages/y24/8/9787571029821.jpg)
《
美丽的地球:高山(呈现世界70余座宏伟高山,感受世界的起伏)
》
售價:HK$
112.7
![下一个风口:新质生产力驱动下的科创投资逻辑](http://103.6.6.66/upload/mall/productImages/24/31/9787300330051.jpg)
《
下一个风口:新质生产力驱动下的科创投资逻辑
》
售價:HK$
80.4
![傻钱:社交浪潮与散户革命](http://103.6.6.66/upload/mall/productImages/24/30/9787521760552.jpg)
《
傻钱:社交浪潮与散户革命
》
售價:HK$
78.2
![猎头高情商沟通实务](http://103.6.6.66/upload/mall/productImages/24/31/9787301352984.jpg)
《
猎头高情商沟通实务
》
售價:HK$
56.4
|
編輯推薦: |
本书基于Python的23种设计模式,展示了面向对象的基础知识、可视化编程,以及如何使用“创建型模式”、“结构型模式”、”行为型模式“,旨在帮助Python程序爱好者拓宽面向对象编程知识和设计模式相关技能,轻松解决各种复杂的编程问题。本书配有大量清晰直观的可执行代码实例,让读者快速掌握Python语言并轻松实现各种对象不费吹灰之力。
|
內容簡介: |
本书提供了23种经过验证的的、可视化、示例驱动的模式,涉及抽象类、多重继承、GUI编程和小部件、图形类、绘图和绘图、数学、数据库、Python装饰器、图像、线程、迭代器、创建可执行代码等,从而编写更加健壮、高效、可维护和优雅的Python代码,生成功能强大、灵活的程序。
|
關於作者: |
詹姆斯·W. 库珀
(James W. Cooper)
拥有博士学位,他曾在学术界、科学仪器行业和IBM工作超过25年,曾担任IBM的Thomas J.Watson研究中心的计算机科学家,拥有11项专利,著有20余本书,包括3本关于多种语言的设计模式
的书。
|
目錄:
|
目 录Contents
译者序
前 言
第一部分 设计模式基础
第1章 对象简介 3
类的__init__方法 4
类的局部变量 4
类的集合 4
继承 5
创建派生类 6
多重继承 6
绘制矩形和正方形 7
变量的可见性 8
局部变量 9
Python中的变量类型 10
总结 11
GitHub中的程序 11
第2章 Python可视化编程 12
导入少量名字 13
面向对象的程序 14
使用消息框 15
使用文件对话框 16
理解pack布局管理器选项 16
使用ttk库 17
响应用户输入 18
运用tkinter中的颜色 20
创建单选按钮 20
类之间的通信 22
使用grid布局 23
创建复选按钮 24
在窗口中添加菜单项 26
使用LabelFrame组件 29
GitHub中的程序 30
第3章 数据表格的可视化编程 31
创建列表框 32
使用组合框 35
树视图组件 36
GitHub中的程序 38
第4章 设计模式 39
定义设计模式 40
学习步骤 40
面向对象方法说明 40
参考文献 41
第二部分 创建型模式
第5章 工厂模式 45
工厂模式简介 45
定义基类 46
两个子类 46
创建简单的工厂模式 47
数学运算中的工厂模式 48
GitHub中的程序 49
问题思考 49
第6章 工厂方法模式 50
Swimmer类 51
Event类 52
StraightSeeding类 53
CircleSeeding类 54
创建Seeding程序 54
EventFactory类 56
工厂方法模式的使用场景 56
GitHub中的程序 57
第7章 抽象工厂模式 58
GardenMarker工厂 58
花园规划界面 60
抽象工厂模式总结 60
问题思考 60
GitHub中的程序 60
第8章 单例模式 61
抛出异常 62
创建一个类实例 62
单例模式的静态类 63
在大型程序中查找单例 63
单例模式总结 63
GitHub中的程序 63
第9章 生成器模式 64
投资跟踪器 64
调用生成器 66
生成器模式总结 69
问题思考 69
GitHub中的程序 69
第10章 原型模式 70
Python中的克隆 70
使用原型 71
原型模式总结 73
GitHub中的程序 73
第11章 创建型模式总结 74
第三部分 结构型模式
第12章 适配器模式 77
列表之间的数据移动 77
创建一个适配器 79
GitHub中的程序 81
第13章 桥接模式 82
创建用户界面 84
扩展桥 84
桥接模式总结 86
GitHub中的程序 86
第14章 组合模式 87
组合结构的实现 88
工资的计算 88
Employee类 88
Boss类 89
创建员工树 89
打印输出员工树 90
创建树视图 91
使用双向链表 93
组合模式总结 94
组合模式的实现 94
GitHub中的程序 95
第15章 装饰器模式 96
装饰按钮 96
使用装饰器 97
使用非可视化装饰器 98
数据类装饰器 99
使用数据类装饰器处理默认值 100
装饰器、适配器以及组合实体 100
装饰器模式总结 101
GitHub中的程序 101
第16章 外观模式 102
创建外观类 104
创建数据库和表格 107
使用SQLite 108
外观模式总结 109
GitHub中的程序 109
关于MySQL 109
参考资料 110
第17章 享元模式 111
享元 111
程序示例 112
写入时复制对象 114
GitHub中的程序 115
第18章 代理模式 116
使用Python图像库(PIL) 116
使用PIL显示图像 117
使用多线程加载图像 117
多线程日志 119
写入时复制 119
对比相关模式 119
GitHub中的程序 120
第19章 结构型模式总结 121
第四部分 行为型模式
第20章 责任链模式 125
责任链模式的使用场景 126
程序示例 126
列表框 128
编写帮助系统 129
接收帮助命令 130
检查 130
责任链的树结构 131
请求的种类 132
责任链模式总结 132
GitHub中的程序 132
第21章 命令模式 133
命令模式的使用场景 133
命令对象 134
键盘实例 134
调用命令对象 136
创建命令对象 136
命令模式介绍 137
命令模式总结 137
撤销操作 138
总结 140
参考资料 140
GitHub中的程序 141
第22章 解释器模式 142
解释器模式的使用场景 142
简单的报表实例 143
解释语言 143
语句解析 145
控制台界面 147
用户界面 148
解释器模式总结 148
GitHub中的程序 149
第23章 迭代器模式 150
迭代器模式简介 150
for循环迭代器 151
斐波那契迭代 151
筛选迭代器 152
用生成器创建迭代器 154
斐波那契迭代器 154
类中的生成器 155
迭代器模式总结 155
GitHub中的程序 156
第24章 中介者模式 157
中介者模式示例 157
控件间的交互 158
程序示例 159
中介者及命令对象 160
中介者模式总结 161
单接口中介者 161
GitHub中的程序 161
第25章 备忘录模式 162
备忘录模式的使用场景 162
程序示例 163
备忘录模式总结 167
GitHub中的程序 167
第26章 观察者模式 168
观察颜色变化的程序示例 169
给观察者发送信息 171
观察者模式总结 171
GitHub中的程序 172
第27章 状态模式 173
程序示例 173
状态间的切换 176
中介者与状态管理器交互 177
状态模式总结 178
状态转换 179
GitHub中的程序 179
第28章 策略模式 180
策略模式简介 180
程序示例 181
上下文 182
命令按钮 182
折线图和柱状图策略 182
策略模式总结 184
GitHub中的程序 185
第29章 模板方法模式 186
模板方法模式简介 186
模板类方法 187
程序示例 187
绘制三角形的程序 189
模板与回调方法 190
模板方法模式总结 191
GitHub中的程序 191
第30章 访问者模式 192
访问者模式的使用场景 192
程序示例 193
访问类 195
同时访问经理和员工 196
二次分发 197
遍历系列类 197
访问者模式总结 197
GitHub中的程序 198
第五部分 Python基础知识
第31章 Python中的变量和语法 201
数据类型 201
数字常量 202
字符串 202
字符常量 203
变量 204
复数 204
整数除法 205
用于初始化的等号 205
一个简单的Python应用程序 206
编译和运行程序 206
算术运算符 206
复合运算符和赋值语句 207
比较运算符 208
输入语句 208
PEP 8标准 209
第32章 Python中的判定语句 212
条件判定语句 212
组合条件 213
常见错误 213
循环语句 213
中断与继续语句 215
每行长度 215
打印输出函数 216
格式化数字 217
格式化日期 219
匹配函数 219
参考资料 221
GitHub中的程序 221
第33章 Python开发环境 222
IDLE 222
Thonny 222
PyCharm 223
Visual Studio 223
其他开发环境 223
命令行执行 225
CPython、IPython和Jython 225
第34章 Python的集合和文件 226
切片 226
切片字符串 227
改变列表内容 228
复制列表 229
读取文件 229
处理异常 231
使用字典 231
使用元组 233
使用集合 233
使用map函数 234
编写一个完整的程序 234
使用列表推导 235
GitHub中的程序 236
第35章 函数 237
返回一个元组 238
应用程序执行 238
总结 239
GitHub中的程序 239
|
內容試閱:
|
前 言Preface
在我刚开始学习Python时,Python超级简单的编程方式和简单易学的基本程序给我留下了深刻的印象。Python语言的语法非常简单,不需要记忆括号或分号。不同于那些需要使用键创建4个首行缩进的空格的编程语言,Python编程简单易学。
使用Python几周后,我认识到Python语言是如此令人难以置信,它可以实现非常强大的功能。Python是一门完全面向对象的语言,用户可利用它轻松创建类并设定数据的使用范围,不必为复杂的语法而烦恼。
事实上,当我用Python重新编写几年前曾用Java编写的程序时,我为Python的简单易用感到惊讶。同时,Python强大的集成开发环境(IDE),大大减少了程序编写中的错误数量。
当我用Python很快完成许多任务时,我意识到是时候写一本关于Python的书了。我用Python语言重新编写了全新、干净、可读的23个经典设计模式,由此诞生了本书。本书展示了面向对象的基础知识、可视化编程,以及如何使用经典设计模式。学习者可以在GitHub上找到相关程序的全部开源代码,GitHub代码库链接如下:https://github.com/jwcnmr/jameswcooper/
tree/main/Pythonpatterns。
本书旨在帮助Python程序爱好者拓宽面向对象编程(OOP) 和设计模式的相关知识。
如果读者是一位Python编程的新手,可以直接学习第31章~第35章的Python基础知识,然后返回第1章学习。
如果读者是一位有经验的Python编程人员,可以从第1章开始学习面向对象编程和设计模式的相关知识,按个人喜好,也可以跳过第2章和第3章,直接学习后面的内容。
Python是所有编程语言中最容易学习的一门语言,通过运用设计模式,实现各种对象十分容易。随后,读者将了解到对象可以做什么以及在工作中如何使用对象。
在任何情况下,面向对象编程的方法都有助于读者编写更好的、更容易被重复利用的程序代码。
本书结构
本书由以下五个部分构成。
第一部分 设计模式基础
从本质上说,设计模式描述的是对象间的有效互动。本书第1章介绍对象的相关内容,并提供图形化实例来演示模式是如何工作的。
第2章和第3章介绍Python可视化编程工具—tkinter库,用于创建窗口、按钮、列表、表格等对象。
第4章介绍设计模式的定义及其相关内容。
第二部分 创建型模式
第5章介绍基本的工厂模式,它是第6章的基础。
第6章介绍工厂方法模式。在此模式中,父类将创建实例对象的决定交给每个子类。
第7章讨论抽象工厂模式。抽象工厂模式是一个工厂对象,它返回几组类之一。
第8章介绍单例模式,它所描述的类中不能有多个实例。单例模式提供了对此实例的单个全局访问点。该模式并不常用,但了解该模式非常有帮助。
第9章介绍生成器模式,该模式将复杂对象的构造与其可视化表示分开,以便可以根据程序的需要创建不同的表示形式。
第10章展示通过原型模式创建一个类实例是多么耗时且复杂。对于复杂对象,通常需要复制原始实例对象并酌情做出修改,而不是创建多个实例。
第11章总结第二部分的模式。
第三部分 结构型模式
第12章介绍适配器模式,该模式用于将一个类的编程接口转换为另一个类的编程接口。适配器在不相关的多个类在同一个程序中协同工作时非常有用。
第13章介绍桥接模式,该模式旨在将类的接口与其实现代码分开。这使用户能够在不更改客户端代码的情况下改变或更换类的实现代码。
第14章介绍组合模式,该模式适用于组件是单个对象或对象的集合的情况,通常采用树状结构。
第15章介绍装饰器模式,该模式提供了一种用户可修改单个对象的行为而不必创建新的派生类的方法。该模式虽然可以应用于按钮等可视化对象,但在 Python 中最常见的用途是创建一种修改单个类实例行为的宏。
第16章介绍外观模式,阐述如何使用外观模式编写一个简化的代码接口。
第17章介绍享元模式,该模式用于将一些数据移到类外,以减少对象的数量。
第18章介绍代理模式,该模式适用于以简单的对象表示复杂的对象,或创建耗时的对象的情况。如果创建一个对象需要花费大量时间或占用大量计算机资源,那么可以使用代理模式,代理模式可以实现延迟创建,直到真正需要该对象为止。
第19章总结了第三部分的模式。
第四部分 行为型模式
第20章介绍责任链模式,该模式展示请求如何从链中的一个对象传递到下一个对象,直到请求被识别,实现对象之间的解耦。
第21章介绍命令模式,展示了命令模式如何使用简单的对象执行软件命令。 此外,该模式支持日志记录和可撤销的操作。
第22章介绍解释器模式,该模式展示了如何创建一个小型执行语言,并将其包含在应用程序中。
第23章介绍迭代器模式,该模式描述了遍历对象集合中的元素的方法。
第24章介绍中介者模式,该模式通过使用独立的对象来简化对象之间的通信,所有对象之间不必相互了解。
第25章介绍备忘录模式,该模式能保存对象的内部状态,以便用户以后可以恢复对象信息。
第26章介绍观察者模式,该模式允许用户在程序状态发生变化时将更改通知给多个对象。
第27章介绍状态模式,该模式允许对象在内部状态发生变化时修改自身的行为。
第28章介绍策略模式,该模式与状态模式类
|
|