实战Python设计模式 可复用面向对象软件开发实践 薛卫国 电子工业pdf下载

实战Python设计模式 可复用面向对象软件开发实践 薛卫国 电子工业百度网盘pdf下载

作者:
简介:实战Python设计模式 可复用面向对象软件开发实践 薛卫国 电子工业
出版社:
出版时间:2020-03
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

基本信息

  • 商品名:正版现货 实战Python设计模式 可复用面向对象软件开发实践9787121379598
  • ISBN:9787121379598
  • 定价:59
  • 出版社:电子工业出版社
  • 作者:薛卫国,薛卫民

参考信息(以实物为准)

  • 出版时间:2020-03-01
  • 印刷时间:2020-03-01
  • 版次:1
  • 印次:1
  • 包装:平装
  • 开本:16开
  • 用纸:胶版纸
  • 页数:221
  • 字数:280000

内容简介

  作为可复用面向对象软件开发的基础,设计模式集合了很多软件开发领域专家的宝贵经验和良好实践,其重要性不言而喻。但是,学习设计模式的过程并不是一帆风顺的,对于缺乏面向对象开发经验的设计者尤其如此。
  就像在游泳池中不能学会海战一样,我们不应该指望理解几个似是而非的例子就可以在实际开发中灵活运用设计模式。学习设计模式好的方式就是在实际的开发中边学边练边体会。《实战Python设计模式:可复用面向对象软件开发实践》利用Python的标准GUI工具包tkinter,通过可执行的示例对23个设计模式逐个进行说明。这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式的利弊,并合理运用设计模式。
  对设计模式感兴趣而且希望随学随用的读者通过该书可以快速跨越从理解到运用的门槛;希望学习Python GUI编程的读者可以将书中的示例作为设计和开发的参考;使用Python语言进行图像分析、数据处理工作的读者可以直接以书中的示例为基础,迅速构建自己的系统架构。

前言序言

  写书不是一件容易的事,因为许多自以为想得很清楚的事情,一旦用文字来表达总感觉有些语焉不详。同时,将自己写的代码公开需要很大的决心,代码的规范性、正确性等都是需要考虑的问题。幸运的是,各位读者还是看到了这本书。笔者认为,对于那些刚接触面向对象开发的人,或者已经具备基本知识却不知道如何运用的开发者,拥有一本结合开发实践Python设计模式的书是很有必要的。笔者结合自己二十多年的开发工作经验,将关于面向对象和设计模式的知识通过Python语言展示给各位读者。面向对象、设计模式的初学者通过本书可以快速入门;已经基本掌握设计模式的开发者通过本书可以理解设计模式在实际开发中的运用,从而能够合理、有效地选择设计模式。关于设计模式
  在实际开发中运用设计模式有利于设计出扩展性更好、更规范的软件架构。在软件开发过程中,总有部分内容是设计者凭直觉得出的结论,但是凭直觉得出的结论不可避免地会出现不易理解的内容。通过运用设计模式,可以在另一个高度上审视自己的设计。面向对象的开发很多时候是基于规则的,越早使用规则,越能在早期发现问题,越能开发出独立性强、扩展性好的软件,而设计模式就是经过实践证明的诸多规则的□佳实践。
  理解了设计模式相当于掌握了一种更高级的设计语言。在考虑设计方案时,一个设计模式的名称就可以表达很多信息,这样可以大大节约设计的时间,提高沟通的效率。笔者身边很多程序员的记忆力非常好,很擅长调试程序,但是让他们描述自己的设计,他们却会感觉很困难。这时如果使用设计模式语言,就可以大大改善这种状况。设计模式语言可以让开发者之间的沟通更顺畅,让设计资料的思路更清晰。本书的构成
  在本书中提到的设计模式都是面向对象领域耳熟能详的内容,为了让读者更好地理解这些内容,本书通过如下方式对其进行说明。
  1.问题说明
  本书力争通过PyExecutor中的实例,使读者理解设计模式想要解决的问题。问题说明部分的内容可以看作设计模式的运用场景,而理解场景和设计模式的关系正是选择和运用设计模式的关键。当然,设计模式的运用场景并不限于问题说明中的实例,这一点请读者务必理解。
  2.模式结构
  设计模式是若干类协同完成复杂功能的方式,模式结构用来说明设计模式中每个类的职责、分工,以及类与类之间是如何协同工作的。读者通过阅读这部分内容,可以对设计模式有一个大致理解。模式结构重点说明的是设计模式的静态信息,其动态信息可以结合示例代码进行理解。
  3.示例代码
  为了让读者对模式结构中的内容加深理解,示例代码会提供可以执行的代码。代码的内容可能是模式结构的简单实现,也可能会结合一个简单的示例,总之不会离设计模式本身的内容太远。所有代码都是可以执行的,读者□好在自己的电脑上输入并调试这些代码,这样可以加深对设计模式的理解,因为很多东西只有在程序运行时才能看出来。
  4.实战运用
  示例软件PyExecutor包含了书中介绍的23个设计模式。如果原封不动地照搬设计模式,是无法获得理想的结果的。无论是设计模式本身,还是运用设计模式的对象,都需要根据实际情况进行相应调整,实战运用中的内容就是这方面的示例。由于PyExecutor的规模比较大,所以本书不会展示其所有代码,读者□好通过下载链接获得代码,再结合书中的说明,边调试边理解代码。
  5.效果讨论
  效果讨论主要用来说明使用设计模式可以解决的问题,以及设计模式为软件带来的优势。通过对示例的说明,读者已经对设计模式有了自己的认识,这时再去理解设计模式,可以达到事半功倍的效果。
  6.提示和技巧
  任何事物都不可能只有优点没有缺点,设计模式也是如此。提示和技巧一方面会说明使用设计模式的注意事项,另一方面也会提供一些深入运用设计模式的建议。

目录

目录 章 示例软件介绍 ··········································································.11.1 准备工作 ···········································································.11.1.1 源代码下载 ································································.11.1.2 安装开发环境 ·····························································.11.2 启动 ·················································································.11.3 功能说明 ···········································································.21.4 功能概要 ···········································································.31.4.1 编辑 ·········································································.31.4.2 逻辑调试 ···································································.61.4.3 文件管理 ···································································.61.4.4 代码生成 ···································································.6第2 章 创建型模式 ·············································································.72.1 抽象工厂模式 ·····································································.72.1.1 问题说明 ···································································.72.1.2 模式结构 ···································································.82.1.3 示例代码 ···································································.92.1.4 实战运用 ··································································.122.1.5 效果讨论 ··································································.192.1.6 提示和技巧 ·······························································.192.2 工厂方法模式 ····································································.192.2.1 问题说明 ··································································.192.2.2 模式结构 ··································································.212.2.3 示例代码 ··································································.222.2.4 实战运用 ··································································.242.2.5 效果讨论 ··································································.262.2.6 提示和技巧 ·······························································.262.3 原型模式 ··········································································.272.3.1 问题说明 ··································································.272.3.2 模式结构 ··································································.282.3.3 示例代码 ··································································.292.3.4 实战运用 ··································································.302.3.5 效果讨论 ··································································.342.3.6 提示和技巧 ·······························································.342.4 生成器模式 ·······································································.352.4.1 问题说明 ··································································.352.4.2 模式结构 ··································································.372.4.3 示例代码 ··································································.382.4.4 实战运用 ··································································.422.4.5 效果讨论 ··································································.432.4.6 提示和技巧 ·······························································.442.5 单例模式 ··········································································.442.5.1 问题说明 ··································································.442.5.2 模式结构 ··································································.452.5.3 示例代码 ··································································.462.5.4 实战运用 ··································································.472.5.5 效果讨论 ··································································.502.5.6 提示和技巧 ·······························································.502.6 创建型模式小结 ·································································.50第3 章 结构型模式 ············································································.523.1 组合模式 ··········································································.523.1.1 问题说明 ··································································.523.1.2 模式结构 ··································································.533.1.3 示例代码 ··································································.543.1.4 实战运用 ··································································.573.1.5 效果讨论 ··································································.603.1.6 提示和技巧 ·······························································.613.2 适配器模式 ·······································································.613.2.1 问题说明 ··································································.613.2.2 模式结构 ··································································.643.2.3 示例代码 ··································································.643.2.4 实战运用 ··································································.663.2.5 效果讨论 ··································································.693.2.6 提示和技巧 ·······························································.693.3 桥接模式 ··········································································.703.3.1 问题说明 ··································································.703.3.2 模式构造 ··································································.723.3.3 示例代码 ··································································.733.3.4 实战运用 ··································································.763.3.5 效果讨论 ··································································.793.3.6 提示和技巧 ·······························································.803.4 装饰器模式 ·······································································.803.4.1 问题说明 ··································································.803.4.2 模式结构 ··································································.813.4.3 示例代码 ··································································.823.4.4 实战运用 ··································································.843.4.5 效果讨论 ··································································.873.4.6 提示和技巧 ·······························································.883.5 代理模式 ··········································································.883.5.1 问题说明 ··································································.883.5.2 模式结构 ··································································.903.5.3 示例代码 ··································································.913.5.4 实战运用 ··································································.943.5.5 效果讨论 ··································································.963.5.6 提示和技巧 ·······························································.963.6 享元模式 ··········································································.963.6.1 问题说明 ··································································.963.6.2 模式结构 ··································································.973.6.3 示例代码 ··································································.983.6.4 实战运用 ································································.1003.6.5 效果讨论 ································································.1043.6.6 提示和技巧 ·····························································.1043.7 外观模式 ········································································.1043.7.1 问题说明 ································································.1043.7.2 模式结构 ································································.1063.7.3 实战运用 ································································.1063.7.4 效果讨论 ································································.1093.7.5 提示和技巧 ·····························································.1103.8 结构型模式小结 ·······························································.110第4 章 行为模式 ·············································································.1114.1 职责链模式 ·····································································.1114.1.1 问题说明 ································································.1114.1.2 模式结构 ································································.1134.1.3 示例代码 ································································.1134.1.4 实战运用 ································································.1154.1.5 效果讨论 ································································.1194.1.6 提示和技巧 ·····························································.1194.2 观察者模式 ·····································································.1194.2.1 问题说明 ································································.1194.2.2 模式结构 ································································.1204.2.3 示例代码 ································································.1214.2.4 实战运用 ································································.1234.2.5 效果讨论 ································································.1274.2.6 提示和技巧 ·····························································.1274.3 中介者模式 ·····································································.1284.3.1 问题说明 ································································.1284.3.2 模式结构 ································································.1294.3.3 示例代码 ································································.1304.3.4 实战运用 ································································.1324.3.5 效果讨论 ································································.1334.3.6 提示和技巧 ·····························································.1344.4 策略模式 ········································································.1344.4.1 问题说明 ································································.1344.4.2 模式结构 ································································.1364.4.3 示例代码 ································································.1374.4.4 实战运用 ································································.1394.4.5 效果讨论 ································································.1444.4.6 提示和技巧 ·····························································.1454.5 命令模式 ········································································.1454.5.1 问题说明 ································································.1454.5.2 模式结构 ································································.1464.5.3 示例代码 ································································.1484.5.4 实战运用 ································································.1504.5.5 效果讨论 ································································.1544.5.6 提示和技巧 ·····························································.1544.6 备忘录模式 ·····································································.1554.6.1 问题说明 ································································.1554.6.2 模式结构 ································································.1564.6.3 示例代码 ································································.1574.6.4 实战运用 ································································.1594.6.5 效果讨论 ································································.1614.6.6 提示和技巧 ·····························································.1614.7 模板方法模式 ··································································.1624.7.1 问题说明 ································································.1624.7.2 模式结构 ································································.1634.7.3 示例代码 ································································.1644.7.4 实战运用 ································································.1684.7.5 效果讨论 ································································.1704.7.6 提示和技巧 ·····························································.1704.8 迭代器模式 ·····································································.1714.8.1 问题说明 ································································.1714.8.2 模式结构 ································································.1724.8.3 示例代码 ································································.1734.8.4 实战运用 ································································.1764.8.5 效果讨论 ································································.1794.8.6 提示和技巧 ·····························································.1794.9 访问者模式 ·····································································.1804.9.1 问题说明 ································································.1804.9.2 模式结构 ································································.1824.9.3 示例代码 ································································.1834.9.4 实战运用 ································································.1874.9.5 效果讨论 ································································.1914.9.6 提示和技巧 ·····························································.1924.10 状态模式 ·······································································.1934.10.1 问题说明 ······························································.1934.10.2 模式结构 ······························································.1944.10.3 示例代码 ······························································.1954.10.4 实战运用 ······························································.2034.10.5 效果讨论 ······························································.2064.10.6 提示和技巧 ···························································.2064.11 解释器模式 ····································································.2064.11.1 问题说明 ······························································.2064.11.2 模式结构 ······························································.2074.11.3 示例代码 ······························································.2084.11.4 实战运用 ······························································.2144.11.5 效果讨论 ······························································.2194.11.6 提示和技巧 ···························································.2204.12 行为模式小结 ·································································.220

内页插图

作者简介

薛卫国__eol__大连某日资嵌入式软件开发公司架构组负责人、CSDN博客专家,埋头于C++开发线二十余年,擅长面向对象设计、编程,熟练掌握UML、安卓应用、微信小程序开发,精通Python、Java语言并长期研究各种编程语言的设计模式。公众号“面向对象思考”。__eol____eol__薛卫民__eol__1999年毕业于东北大学,2003年赴日本从事软件开发工作至今,现为日本某知名电子医疗设备制造公司框架设计开发团队的主要成员,负责医疗设备软件的框架设计和开发工作。拥有13年面向对象设计开发经验·,熟练掌握统一建模语言(UML),精通C++、Python、C#等编程语言。

精彩书评

  ★学习设计模式的难点在于如何在实际开发中根据使用场景选择适合的模式。为了解决这个问题,该书首先从实际开发场景入手提出设计模式需要解决的问题,接着通过一些典型的简单示例说明设计模式的结构和行为,□后结合实际的开发示例,说明设计模式在产品级软件开发中的运用方法和注意事项。学习该书,可以帮助读者实现设计模式从入门到精通的跨越。
  ——东北大学软件学院教授、国务院津贴获得者郝培锋
  
  ★该书有两个亮点:一,其是面向Python语言的,现在学习Python语言的人很多,而关于如何有效设计Python程序的书却不多;第二,其能够结合一个完整示例PyExecutor,告诉开发者们当面对具体的开发需求时如何参考模式进行有效设计。PyExecutor是一个非常有吸引力的示例,支持对功能模块图的建模、调试和仿真,因此,该书能帮助众多开发者提升他们迫切需要的综合设计能力。期待这本书能够给读者提供一个关于Python设计模式的全面参考。
  ——火龙果软件工程创始人俎涛