《Go语言设计模式(双色版)》聚焦于Go语言设计模式的知识与应用。全书共6章,分别为设计模式入门、创建型设计模式、结构型设计模式、行为型设计模式、设计模式扩展、设计模式与软件架构。本书简洁而不失技术深度,内容覆盖Go语言的主流设计模式和软件架构,以极简的文字介绍了复杂的案例,是学习Go语言设计模式和软件架构的实用教程。
《Go语言设计模式(双色版)》适合初学编程的自学者、Go语言高级开发人员、Go语言架构师、Web开发工程师、DevOps运维人员学习和参考,也可以作为专科院校、相关培训学校的教材。
Go设计模式可以让开发者避免重新发明轮子,提高开发者的工作效率。设计模式还提供了一种有用的通用语言,用于在与他人讨论或在更大的团队中管理代码时概念化重复的问题和解决方案。
廖显东
高级软件架构师,全栈开发者,技术极客,Gopher,开源爱好者。
毕业于河海大学,先后就职于苏宁易购等多家大型公司。具有多年软件开发与团队管理经验,精通Java、JavaScript、C、C++、C#、Python、PHP等开发语言。对Go、Rust等开发语言有深入实践和研究。对大型电子商务系统开发、高并发架构、分布式架构、微服务、大数据、人工智能算法等领域有深入实践和研究。
曾出版《GO Web编程实战派——从入门到精通》
前言
Go语言是Google于2009年开源的系统编程语言,可以在不损失应用程序性能的情况下,极大地降低代码的复杂性,其特点是简洁、快速、安全、并行、有趣、开源、数组安全、编译迅速。
Go语言在高性能分布式系统、Web服务器编程、分布式系统开发、云平台开发、区块链开发等领域得到了广泛应用。
近几年,很多公司,特别是云计算公司开始使用Go语言重构其基础架构,并且直接使用Go语言进行应用程序开发。Docker、Kubernetes等重量级应用程序的持续火热,使Go语言成为当下最热门的编程语言之一。
为什么需要使用设计模式
设计模式是经过长期实践检验的解决方案,提供了丰富的软件范例和代码模板,可以帮助软件开发者加快开发速度、解决代码问题、提升代码的可读性。
设计模式可以根据以前的实践和经验记录要采用的解决方案。在设计模式的实现中,需要使用多个软件组件共同实现某些功能。因此,设计模式涉及多个软件组件的开发过程。
软件开发者通常会根据多个标准评估现有代码,包括代码的干净程度、表现力、内存资源占用量和运行速度。设计模式有助于将创造性设计方法应用于特定问题。使用设计模式的主要原因如下。
设计模式是经过长期实践检验的解决方案,开发者可以放心使用。
设计模式很容易重复使用。设计模式定义了一个可重用的解决方案,可以定制,以便适应各种挑战。
设计模式富有表现力,使用设计模式可以优雅地解释大型解决方案。
设计模式简化了沟通,熟悉设计模式的开发者可以更轻松地就设计问题的潜在答案进行协作。
设计模式降低了对重构代码的需求。假设一个应用程序是使用设计模式创建的,那么开发者以后可能不需要频繁地修改代码,因为将正确的设计模式应用于特定问题通常是最好的解决方案。
综上所述,设计模式可以让开发者避免重新发明轮子,提高开发者的工作效率。设计模式还提供了一种有用的通用语言,用于在与他人讨论或在更大的团队中管理代码时概念化重复的问题和解决方案。
为什么写本书
近几年,Go语言逐渐成为当下最热门的编程语言之一,越来越多的开发者开始使用Go语言进行软件架构设计,而软件架构设计是软件开发中非常重要的步骤。软件架构与建筑架构类似。如果没有做好建筑架构,那么房屋可能会坍塌。同理,如果没有做好软件架构,那么软件可能会在后期崩溃。所以,作为软件开发者或软件架构师,掌握设计模式和软件架构非常重要。
目前网络上有一些关于设计模式的代码和文档,但基本都是零碎的知识,对设计模式的描述也不够详细,没有系统地对Go语言设计模式进行讲解。这对想系统地学习Go语言设计模式的开发者来说,会浪费大量的时间。与此同时,目前国内还没有关于Go语言设计模式的书,特别是关于Go语言设计模式与软件架构的高级开发知识和技巧的书。所以笔者想结合多年的Go语言软件开发经验,写一本关于Go语言设计模式的书,希望给更多的初学者带来帮助。于是,2021年下半年我便在工作之余开启了本书的写作之旅。
本书特色
笔者结合多年的Go语言编程实践经验,对Go语言设计模式和软件架构的相关知识进行了全面、深入的讲解。本书的特色如下。
一线技术,突出实战。本书以实战为核心,每个设计模式都有详细的实现方式和实战代码,所有代码都采用笔者写书时最新的Go语言版本(1.18)编写。
零基础入门,循序渐进。本书首先讲解设计模式入门,然后讲解设计模式的基本概念,再讲解Go语言设计模式的具体实现,最后讲解设计模式的项目实战,帮助初学者向Go语言设计模式和软件架构实战高手迈进。
丰富图示,更易理解。本书言简意赅,以帮助读者提升开发效率为导向。每个设计模式都有UML类图,通过丰富的图示,帮助读者缩短阅读本书的时间。
突出实战,快速突击。本书的实战代码大部分都来自最新的企业实战项目。对于购买本书的读者,配套的源代码可以在网上下载,下载即可运行,让读者通过实践加深理解。
实战方案可以二次开发,用于进行实战部署。本书以实战为主,所有的实战代码都可以直接运行。特别是第6章,购买本书的读者可以获得Go语言主流软件架构的全部源代码。
技术交流
假如读者在阅读本书的过程中有任何疑问,那么请关注“源码大数据”公众号,并且按照提示输入问题,笔者会第一时间与读者进行交流。
在关注“源码大数据”公众号后,输入“go design pattern”,即可获得本书源代码、学习资源、面试题库等。
在关注“源码大数据”公众号后,输入“更多源码”,即可获得大量学习资源,包括但不限于电子书、源代码、视频教程等。
由于笔者水平有限,难免有纰漏之处,欢迎读者通过“源码大数据”公众号或QQ(823923263)批评指正。
致谢
感谢Go语言社区的所有贡献者,没有他们多年来的贡献,就没有Go语言社区的繁荣。谨以此书献给所有喜欢Go语言设计模式的朋友们。
感谢我的家人,特别是妻子。在我写作期间,妻子悉心做好幕后工作,并且坚定地支持我,使我有更多时间、更加专注而坚定地写作。
廖显东
2022年8月