前 言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章介绍策略模式,该模式与状态模式类