《实战Python设计模式:实战Python设计模式:可复用面向对象软件开发实践 》是本人根据自己在实际开发工作中积累的有关Python语言,设计模式的经验,想法写成的一本书,由电子工业出版社出版。谨此推荐给各位。
作为可复用面向对象软件开发的基础,设计模式集合了很多软件开发领域专家的宝贵经验和良好实践,其重要性不言而喻。但是,学习设计模式的过程并不是一帆风顺的,对于缺乏面向对象开发经验的设计者尤其如此。
就像在游泳池中不能学会海战一样,我们不应该指望理解几个似是而非的例子就可以在实际开发中灵活运用设计模式。学习设计模式最好的方式就是在实际的开发中边学边练边体会。本书利用Python 的标准GUI 工具包tkinter,通过可执行的示例对23 个设计模式逐个进行说明。这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一
方面通过对这些问题的解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式的利弊,并合理运用设计模式。
对设计模式感兴趣而且希望随学随用的读者通过本书可以快速跨越从理解到运用的门槛;希望学习Python GUI 编程的读者可以将本书中的示例作为设计和开发的参考;使用Python 语言进行图像分析、数据处理工作的读者可以直接以本书中的示例为基础,迅速构建自己的系统架构。
写书不是一件容易的事,因为许多自以为想得很清楚的事情,一旦用文字来表达总感觉有些语焉不详。同时,将自己写的代码公开需要很大的决心,代码的规范性、正确性等都是需要考虑的问题。幸运的是,各位读者还是看到了这本书。笔者认为,对于那些刚接触面向对象开发的人,或者已经具备基本知识却不知道如何运用的开发者,拥有一本结合开发实践Python 设计模式的书是很有必要的。笔者结合自己二十多年的开发工作经验,将关于面向对象和设计模式的知识通过Python 语言展示给各位读者。面向对象、设计模式的初学者通过本书可以快速入门;已经基本掌握设计模式的开发者通过本书可以理解设计模式在实际开发中的运用,从而能够合理、有效地选择设计模式。
关于设计模式
在实际开发中运用设计模式有利于设计出扩展性更好、更规范的软件架构。在软件开发过程中,总有部分内容是设计者凭直觉得出的结论,但是凭直觉得出的结论不可避免地会出现不易理解的内容。通过运用设计模式,可以在另一个高度上审视自己的设计。面向对象的开发很多时候是基于规则的,越早使用规则,越能在早期发现问题,越能开发出独立性强、扩展性好的软件,而设计模式就是经过实践证明的诸多规则的最佳实践。
理解了设计模式相当于掌握了一种更高级的设计语言。在考虑设计方案时,一个设计模式的名称就可以表达很多信息,这样可以大大节约设计的时间,提高沟通的效率。笔者身边很多程序员的记忆力非常好,很擅长调试程序,但是让他们描述自己的设计,他们却会感觉很困难。这时如果使用设计模式语言,就可以大大改善这种状况。设计模式语言可以让开发者之间的沟通更顺畅,让设计资料的思路更清晰。
本书的构成
在本书中提到的设计模式都是面向对象领域耳熟能详的内容,为了让读者更好地理解这些内容,本书通过如下方式对其进行说明。
1.问题说明
本书力争通过PyExecutor 中的实例,使读者理解设计模式想要解决的问题。问题说明部分的内容可以看作设计模式的运用场景,而理解场景和设计模式的关系正是选择和运用设计模式的关键。当然,设计模式的运用场景并不限于问题说明中的实例,这一点请读者务必理解。
2.模式结构
设计模式是若干类协同完成复杂功能的方式,模式结构用来说明设计模式中每个类的职责、分工,以及类与类之间是如何协同工作的。读者通过阅读这部分内容,可以对设计模式有一个大致理解。模式结构重点说明的是设计模式的静态信息,其动态信息可以结合示例代码进行理解。
3.示例代码
为了让读者对模式结构中的内容加深理解,示例代码会提供可以执行的代码。代码的内容可能是模式结构的简单实现,也可能会结合一个简单的示例,总之不会离设计模式本身的内容太远。所有代码都是可以执行的,读者最好在自己的电脑上输入并调试这些代码,这样可以加深对设计模式的理解,因为很多东西只有在程序运行时才能看出来。
4.实战运用
示例软件PyExecutor 包含了书中介绍的23 个设计模式。如果原封不动地照搬设计模式,是无法获得理想的结果的。无论是设计模式本身,还是运用设计模式的对象,都需要根据实际情况进行相应调整,实战运用中的内容就是这方面的示例。由于PyExecutor 的规模比较大,所以本书不会展示其所有代码,读者最好通过下载链接获得代码,再结合书中的说明,边调试边理解代码。
5.效果讨论
效果讨论主要用来说明使用设计模式可以解决的问题,以及设计模式为软件带来的优势。通过对示例的说明,读者已经对设计模式有了自己的认识,这时再去理解设计模式,可以达到事半功倍的效果。
6.提示和技巧
任何事物都不可能只有优点没有缺点,设计模式也是如此。提示和技巧一方面会说明使用设计模式的注意事项,另一方面也会提供一些深入运用设计模式的建议。
阅读本书的几点建议
设计模式多种多样,其本质就是对需要替换的、变更的内容进行抽象处理,然后再运用多态技术对功能进行扩展,简单地讲就是,想变什么就抽象什么,这应该是学习和理解设计模式的最重要的9 个字了。
在学习设计模式时经常遇到的一个问题就是,很多设计模式的类图都很相似,在实际运用时不知道应该选择哪一个。出现这个问题的最大原因就是将类图当成设计模式的依据了。由于面向对象设计唯一的“大招”就是多态,所以很多设计模式的构造看起来或多或少都有些相似。比较合理的步骤是先根据场景选择设计模式,然后根据设计模式构造(形式)调整类的职责、接口和协作关系。
有些开发者反对设计模式的一个原因就是,使用设计模式容易出现过度设计。关于这个问题,笔者的观点是:过度设计当然不好,但是这并不是设计模式的错,而是开发者的问题。这和难以理解的接口、混乱的代码是同样的问题。为避免过度设计就不花时间和精力使用设计模式进行设计,就有点因噎废食了。
程序员的语言
将自己写的代码公开需要很大的勇气,有很多程序员甚至不敢在自己写出的代码上签名。在本书中使用的PyExecutor 是笔者为了说明设计模式而开发的一个模拟项目,由于时间和能力的限制,书中的代码只写到能将设计模式讲清楚的程度,离真正的产品还有很远的距离。如果读者希望将这些代码运用到自己的工作中,那么还需要对其进行完善和改进。书中关于设计模式、Python 语言和tkinter 库的用法也有不足之处,恳请各位读者批评指正。
致谢
感谢电子工业出版社的林瑞和编辑。本书从立意、结构的确定到内容的确认和整理,每个环节都得到了林编辑的建议和意见。毫不夸张地说,如果没有林编辑的努力,就不会有本书的面世。感谢我的父母。他们两个人都没有读过什么书,但是他们不遗余力地培养孩子读书,时至今日,我们兄弟几人虽说没有出人头地,但做到了自食其力。
感谢我的夫人。夫人本来也是一个学霸,自结婚以后,她将大部分时间都花在家庭、孩子上,但是她一直无怨无悔。
感谢我的两个孩子。孩子们为这个家庭带来了活力,他们在自己成长的同时也见证了父母的成长。在本书写作过程中,他们也做出了自己的贡献。目前两个孩子都处在成长的重要阶段,在此希望我可以为他们树立榜样。
相关下载链接:
本书相关代码,示例逻辑都可以从以下链接下载:
http://www.broadview.com.cn/book/5920
觉得本文有帮助?请分享给更多人。
关注【面向对象思考】轻松学习每一天!
面向对象开发,面向对象思考!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。