编辑点评:构建大型软件系统最强大的方法之一
Python设计模式第2版pdf电子版全面揭示有关设计模式的内容,并结合 Python 语言进行示例化 的解析。全书囊括单例设计模式、工厂模式、门面模式、代理模式、观察者模式、命令模 式、模板方法模式、复合模式、状态设计模式以及反模式等多种设计模式。
Python设计模式第2版电子版预览
图书亮点
随着人们对优化软件架构和设计的关注度的不断提高,软件架构师也愈发认识到在架构和设计层面,对象创建、代码结构和对象之间的交互优化的重要性。因为这样不仅能够降低软件的维护成本,而且还能确保代码的可重用性,提高代码适应变化的能力。在上一版成功的基础上,本书的第2版将利用Python 3.5来帮助读者实现现实世界的各种场景。聽
本书首先从Python的角度对各种设计模式进行了介绍。然后,逐步带领读者深入学习单例模式、工厂模式和门面模式。之后,还介绍了如何使用代理模式来控制对象访问。此外,本书还讲解了观察者模式、命令模式和复合模式。通过阅读本书,读者能够进一步提高其在软件架构、设计和开发方面的专业技能。聽
本书的目标读者聽
本书适用于软件架构师以及热衷于软件设计的Python应用开发人员。对于具有初级Python编程技能并且喜欢使用Python 3.5的工程师来说,阅读本书将更加轻松。聽
通过阅读本书,你将能够:聽
提高自己的技能,创建更好的软件架构;聽
掌握应对常见设计问题的实用性解决方案;聽
探索构成软件设计基础的各种设计原则,如松散耦合、好莱坞原则和开放/封闭原则等;聽
深入理解面向对象编程的概念,并掌握它们在软件开发中的应用方式;聽
加深对创建型设计模式以及各种对象创建方法的理解,从而有助于解决软件开发过程中的相关问题;聽
应用结构型设计模式,并掌握对象和类之间的交互方式,从而协助构建大型的应用程序;聽
利用命令模式和观察者模式深入考察对象之间的交互;聽
利用Python设计模式提高效率,同时提升编程技能。
内容简介
设计模式是构建大型软件系统zui强大的方法之一,优化软件架构和设计已经逐渐成为软件开发和维护过程中的一个重要课题。聽
本书通过11章内容,全面揭示有关设计模式的内容,并结合Python语言进行示例化的解析。全书囊括单例设计模式、工厂模式、门面模式、代理模式、观察者模式、命令模式、模板方法模式、复合模式、状态设计模式以及反模式等多种设计模式。聽
本书适合那些关注软件设计原则,并想将you秀的设计模式应用到Python编程当中的读者阅读,也适合普通的软件工程师、架构师参考。
关于作者
Chetan Giridhar是一位技术领导者、开源爱好者和Python开发人员。他曾在LinuxForYou和Agile Record等杂志上发表多篇技术和开发实践方面的文章,并在Python Papers杂志上发表过技术论文。他曾在PyCon India、Asia-Pacifc和New ZealandPyCon等会议上发表演讲,并热衷于实时通信、分布式系统和云应用等领域。Chetan已经是Packt出版社的技术评审,并为 IPython Visualizations和Core Python等图书撰稿。
目录大全
第1章 设计模式简介 1聽
1.1 理解面向对象编程 1聽
1.1.1 对象 2聽
1.1.2 类 2聽
1.1.3 方法 2聽
1.2 面向对象编程的主要概念 3聽
1.2.1 封装 3聽
1.2.2 多态 3聽
1.2.3 继承 4聽
1.2.4 抽象 4聽
1.2.5 组合 5聽
1.3 面向对象的设计原则 5聽
1.3.1 开放/封闭原则 6聽
1.3.2 控制反转原则 6聽
1.3.3 接口隔离原则 6聽
1.3.4 单一职责原则 7聽
1.3.5 替换原则 7聽
1.4 设计模式的概念 7聽
1.4.1 设计模式的优点 8聽
1.4.2 设计模式的分类 9聽
1.4.3 上下文—设计模式的适用性 9聽
1.5 动态语言的设计模式 9聽
1.6 模式的分类 10聽
1.6.1 创建型模式 10聽
1.6.2 结构型模式 10聽
1.6.3 行为型模式 11聽
1.7 小结 11聽
第2章 单例设计模式 12聽
2.1 理解单例设计模式 12聽
2.2 单例模式中的懒汉式实例化 14聽
2.3 模块级别的单例模式 15聽
2.4 Monostate单例模式 15聽
2.5 单例和元类 16聽
2.6 单例模式Ⅰ 18聽
2.7 单例模式Ⅱ 20聽
2.8 单例模式的缺点 21聽
2.9 小结 22聽
第3章 工厂模式:建立创建对象的工厂 23聽
3.1 了解工厂模式 23聽
3.2 简单工厂模式 24聽
3.3 工厂方法模式 26聽
3.3.1 实现工厂方法 27聽
3.3.2 工厂方法模式的优点 29聽
3.4 抽象工厂模式 30聽
3.5 工厂方法与抽象工厂方法 33聽
3.6 小结 34聽
第4章 门面模式—与门面相适 35聽
4.1 理解结构型设计模式 35聽
4.2 理解门面设计模式 36聽
4.3 UML类图 37聽
4.3.1 门面 37聽
4.3.2 系统 38聽
4.3.3 客户端 38聽
4.4 在现实世界中实现门面模式 38聽
4.5 最少知识原则 42聽
4.6 常见问答 42聽
4.7 小结 43聽
第5章 代理模式—控制对象的访问 44聽
5.1 理解代理设计模式 44聽
5.2 代理模式的UML类图 46聽
5.3 了解不同类型的代理 47聽
5.3.1 虚拟代理 48聽
5.3.2 远程代理 48聽
5.3.3 保护代理 48聽
5.3.4 智能代理 48聽
5.4 现实世界中的代理模式 49聽
5.5 代理模式的优点 52聽
5.6 门面模式和代理模式之间的比较 52聽
5.7 常见问答 53聽
5.8 小结 53聽
第6章 观察者模式—了解对象的情况 54聽
6.1 行为型模式简介 54聽
6.2 理解观察者设计模式 55聽
6.3 现实世界中的观察者模式 58聽
6.4 观察者模式的通知方式 62聽
6.4.1 拉模型 62聽
6.4.2 推模型 62聽
6.5 松耦合与观察者模式 62聽
6.6 观察者模式:优点和缺点 63聽
6.7 常见问答 64聽
6.8 小结 64聽
第7章 命令模式—封装调用 65聽
7.1 命令设计模式简介 65聽
7.2 了解命令设计模式 66聽
7.3 实现现实世界中命令模式 69聽
7.4 命令模式的优缺点 73聽
7.5 常见问答 74聽
7.6 小结 74聽
第8章 模板方法模式—封装算法 75聽
8.1 定义模板方法模式 75聽
8.1.1 了解模板方法设计模式 77聽
8.1.2 模板方法模式的UML类图 79聽
8.2 现实世界中的模板方法模式 81聽
8.3 模板方法模式—钩子 84聽
8.4 好莱坞原则与模板方法 85聽
8.5 模板方法模式的优点和缺点 85聽
8.6 常见问答 86聽
8.7 小结 86聽
第9章 模型—视图—控制器—复合模式 87聽
9.1 复合模式简介 87聽
9.2 模型—视图—控制器模式 88聽
9.2.1 模型—了解应用程序的情况 90聽
9.2.2 视图—外观 90聽
9.2.3 控制器—胶水 90聽
9.3 MVC设计模式的UML类图 92聽
9.4 现实世界中的MVC模式 94聽
9.4.1 模块 94聽
9.4.2 MVC模式的优点 101聽
9.5 常见问答 101聽
9.6 小结 102聽
第10章 状态设计模式 103聽
10.1 定义状态设计模式 103聽
10.1.1 理解状态设计模式 104聽
10.1.2 通过UML图理解状态设计模式 105聽
10.2 状态设计模式的简单示例 106聽
10.3 状态模式的优缺点 110聽
10.4 小结 111聽
第11章 反模式 112聽
11.1 反模式简介 112聽
11.2 软件开发反模式 113聽
11.2.1 意大利面条式代码 114聽
11.2.2 金锤 114聽
11.2.3 熔岩流 115聽
11.2.4 复制粘贴或剪切粘贴式编程 115聽
11.3 软件架构反模式 116聽
11.3.1 重新发明轮子 116聽
11.3.2 供应商套牢 117聽
11.3.3 委员会设计 117聽
11.4 小结 118
免费在线试读
在上一章中,知识兔介绍了模板方法设计模式,该模式的子类可以重新定义算法的具体步骤,从而实现了灵活性和代码重用。同时,知识兔还讲解了模板方法以及如何使用它来构造具有一系列步骤的算法。之后,知识兔讨论了该模式的UML图及其优缺点,在常见间答部分进行了知识拓展,最后进行了总结。
在本章中,知识兔将讨论复合模式。知识兔将介绍模型一视图一控制器(MVC)设计模式,并讨论如何将其应用于软件应用程序的开发。同时,知识兔将分享相应的示例用例,以及基于Python v3.5的代码实现。
在本章中,主要涉及以下主题
复合模式和模型-视图一控制器的简介;MVC模式及其UML图;Python v3.5代码实现的真实用例;MVC模式的优点和缺点;常见问答。
在本章结束时,知识兔将对所有内容进行总结。
9.1 复合模式简介
在本书中,知识兔探索了各种设计模式。正如知识兔所看到的,设计模式可分为三大类:结构型、创建型和行为型设计模式。同时,知识兔还给出了每种类型的相应示例。然而,在软件实现中,模式并是不孤立地工作的。对于所有软件设计或解决方案来说,很少出现仅利用一种设计模式来实现的情况。
实际上,这些模式通常需要同时使用并加以组合,以实现特定的设计解决方案。根据GoF的定义,“复合模式将两个或更多模式组合成解决常见或普遍性问题的解决方案,复合模式不是同时使用的一组模式,而是一个问题的通用解决方案。
接下来,知识兔将考察模型-视图一控制器复合模式,该模式是复合模式的最佳示例,并且已经在许多设计解决方案中应用多年了。
9.2 模型一视图一控制器模式
MVC不仅是一种实现用户界面的软件模式,同时也是一种易于修改和维护的架构。通常来说,MVC模式将应用程序分为3个基本部分:模型、视图和控制器。这3个部分是相互关联的,并且有助于将信息的处理与信息的呈现分离开来。
MVC模式的工作机制为:模型分享数据和业务逻辑(如何存储和查询信息),视图负责数据的展示(如何呈现),而控制器是两者之间的粘合剂,根据用户要求的呈现方式来协调模型和视图。有趣的是,视图和控制器依赖于模型,而不是反过来。这主要是因为用户所关心的是数据。模型是可以独立工作的,这是MVC模式的关键所在。
通常来说,人们会用网站为例来介绍MVC模式。当你浏览网站时会发生什么呢?你点击一个按钮,几个操作发生,你会看到你想要的内容。这是怎么回事?
你是用户,与视图交互。视图就是分享给你的网页。你点击视图上的按钮,它告诉控制器需要做什么。
控制器从视图获取输入并将其发送到模型。然后,模型会根据用户执行的操作来完成相应的动作。
控制器还可以根据其从用户接收的操作(例如更改按钮,显示其他UI元素等)要求视图进行相应的改变。
模型将状态变化通知视图。这可以基于一些内部变化或外部触发,例如点击按钮等。视图随后展示直接从模型获取的状态。例如,如果用户登录到网站,会给他/她呈现一个仪表板视图(登录后),需要在仪表板中填写的所有详细信息都是由模型分享给视图的。
MVC设计模式使用以下术语-模型、视图、控制器和客户端。
下载体验