本书是一本基于互联网真实案例编写的Java设计模式实践图书。全书以解决方案为核心,从实际开发业务中抽离出交易、营销、规则引擎、中间件、框架源码等22个真实场景,对设计模式进行全面、彻底的分析。帮助读者灵活地使用各种设计模式,从容应对复杂变化的业务需求,编写出易维护、可扩展的代码结构。本书融合了生动有趣的动画插图和实践开发的类结构图,让读者不仅能体会设计模式的概念和原理,更能清楚地知晓落地方法。此外,本书还介绍了DDD四层架构、RPC中间件设计、分布式领域驱动设计和设计模式的结合使用等内容。
本书适合计算机相关行业的研发人员、高等院校计算机专业的学生阅读。无论是初学者,还是中、高级研发人员都能从本书中有所获益。
全网阅读超500万次,持续霸榜GitHub Trending 的设计模式教程!
可随时在手边查阅的解决方案型图书
涵盖一线互联网业务开发的众多真实案例
囊括交易、营销、秒杀、中间件、框架源码应用等场景
前言
设计模式的概念最早是由克里斯托弗?亚历山大在其所著的《建筑模式语言》中提出的。该书介绍了城市设计的“语言”,提供了253个描述城镇、邻里、住宅、花园、房间及西部构造的模式,而此类“语言”的基本单元就是模式。后来,埃里克?伽玛、约翰?威利斯迪斯、拉尔夫?约翰逊和理查德?赫尔姆四位作者接受了设计模式的概念。1994年,他们出版了《设计模式:可复用面向对象软件的基础》一书,将设计模式的概念应用到程序开发领域中。
可以看出,设计模式本身是一种通用场景的解决标准和方案,而不是实际场景开发落地的指导手册。这种通用的解决标准和方案是研发人员在大量的项目中验证和提炼的结果,如果只是学习理论知识,没有经历过大型的项目开发,则很难理解和使用设计模式。
为什么写作本书
很多研发人员了解过设计模式,但在实际的业务开发中却很少使用。甚至使用了大量的if…else实现业务流程,对于一次次的需求迭代和逻辑补充,靠东拼西凑疲于应付。如何掌握和使用设计模式的思想和架构思维,并行之有效地运用到业务场景中,具有现实意义。为了让更多的研发人员不仅能掌握设计模式的概念,而且可以将设计模式运用到实际开发中,特撰写此书。
本书主要内容
本书通过从互联网实际的业务开发中遴选出大量的真实案例场景,包括交易、营销、秒杀等,并结合规则引擎、中间件、框架源码和RPC设计等技术点介绍设计模式,帮助开发人员在实际的业务中灵活运用设计模式。
本书共28章,主要内容如下:
-第1~3章,介绍设计模式的原则及落地方法,让读者在学习之前对设计模式有整体的认识。
-第4~25章,分别通过场景案例讲解设计模式的使用方法,包括多种奖品服务工厂、在线试卷题目混排、MQ消息体字段适配、多支付渠道场景桥接、差异化规则引擎组合、ORM中间件设计等。
-第26~28章,扩展知识,介绍领域驱动设计四层架构、RPC中间件设计开发和分布式领域驱动架构设计,帮助读者对设计模式和架构设计有整体的认识。
如何阅读本书
本书是一本偏动手实战的技术图书,主要介绍设计模式解决方案的具体落地方法。本书的每一章都会重点突出与该章主题相关的设计模式。同时,由于每一种设计模式都不是孤立存在的,需要结合使用,所以应在具体的项目场景中灵活运用。在阅读的过程中,读者不仅要仔细阅读每一章的文字及案例场景设计,同时更要多阅读代码,或者自己编写代码。
代码运行环境
-JDK v1.8及以上。
- Maven v3.0及以上。
- IDEA版本:IntelliJ IDEA 2018、2019、2020。
- 其他版本:Spring、SpringBoot、MyBatis等已经配置到POM文件中。
源码使用方法
-本书配套源码的GitHub地址为https://github.com/fuzhengwei/CodeDesign。此源码会不断接受反馈并更新。Gitee 地址为 https://gitee.com/fustack/CodeDesign。
-每一章涉及的代码工程结构与源码部分都有相应的名称。例如,cn-bustack- design-7-01,7-01表示第7章第1个案例的源码。
-源码中的标号的第一个数字代表章节。例如,4.0-0、4.0-1、4.0-2表示第4章的多个源码,在构建过程中需要注意,它们之间会有引用关系。
-第28章因为涉及的工程内容是独立的,所以单独提供了一个压缩包,需要解压缩后再使用IDEA打开。
致谢
首先要特别感谢我的父母(付井海、徐文杰)、妻子(郭维清),是你们在平常的生活中分担了更多,才让我有更多的时间投入文字创作中,使得这本书与广大读者见面。
在电子工业出版社博文视点的宋亚东编辑的热情推动下,促成了我与电子工业出版社的合作。感谢电子工业出版社博文视点对本书的重视,以及为本书出版所做的一切。
由于作者水平有限,书中不足之处在所难免,敬请专家和读者给予批评指正。
付政委(小傅哥)
英雄后裔 英雄后羿