Skip to content

《设计模式就该这样学,基于经典框架源码和真实业务场景》随书代码示例工程

Notifications You must be signed in to change notification settings

gupaoedu-tom/design-samples

Repository files navigation

《设计模式就该这样学,基于经典框架源码和真实业务场景》

已全面开启预售!!!

Design Patterns: Elements of Reusable Object-Oriented Software(以下简称《设计模式》),一书由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides合著(Addison-Wesley,1995)。这四位作者常被称为“四人组(Gang of Four)”,而这本书也就被称为“四人组(或 GoF)”书。他们首次给我们总结出一套软件开发可以反复使用的经验,帮助我们提高代码的可重用性、系统的可维护性等,解决软件开发中的复杂问题。

设计模式已诞生20多年,其间相继出版的关于设计模式的经典著作不计其数。如果说GoF的《设计模式》是设计模式领域的“圣经”,那么之后出版的各种关于设计模式的书籍可称为“圣经”的“批注版”或者“白话版”。本书正是基于GoF的《设计模式》来编写的。

本书可以作为笔者对“圣经”实践的精华总结,是一本可以真正能够落地的“设计模式”之书,也是目前唯一一本结合框架源码如何落地“设计模式”这个角度来理解设计模式的书。本书会结合JDK、Spring、MyBatis、Tomcat、Netty等经典框架源码展开对设计模式的分析。当然,本书还会结合笔者多年的“踩坑填坑”经验和“教学答疑”经验,用比“圣经”更深刻、更全面、更通俗、更生动、更有趣、更接地气的方式并且结合真实的业务场景来分析每种设计模式的优缺点,治愈“设计模式选择困难症”。选择设计模式时就像相亲选对象,一旦做好了接受TA缺点的准备,那TA就一定属于你。所以,本书对于日常开发而言更具有指导意义。

书中部分观点若有不妥之处,恳请纠正,共同进步!

关于我

为什么都叫我“文艺汤”?

我自幼爱好书法和美术,长了一双能书会画的手,而且手指又长又白,因此以前的艺名叫“玉手藝人”。中学期间,曾获市级书法竞赛一等奖,校园美术竞赛一等奖,校园征文比赛二等奖。担任过学生会宣传部长,负责校园黑板报,校园刊物的编辑、排版和设计。

2008年参加工作后,我做过家具建模、平面设计等工作,亲自设计了咕泡学院的 Logo。做讲师之后,我给自己起了一个跟姓氏谐音的英文名字“Tom”,江湖人称“编程界写字写得最好的、书法界编程最牛的文艺汤”。

我的技术生涯

我的 IT 技术生涯应该算是从 2009 年开始的,在此之前做过 UI 设计,做过前端网页,到2009年才真正开始参与Java后台开发。在这里要感谢所有帮助我入门编程的同事和老师。从2010年至2014年担任过项目组长、项目经理、架构师、技术总监,对很多的开源框架建立了自己的独特见解。我会习惯性地用形象思维来理解抽象世界。譬如:看到二进制数 0 和 1,我会想到《周易》中的两仪——阴和阳;看到颜色值用 RGB 表示,我会想到美术理论中的太阳光折射三原色;下班回家看到炒菜流程,我会想到模板方法模式;坐公交车看到学生卡、老人卡、爱心卡,我会想到策略模式;等等。大家看到的这本书,很多地方都融入了这种形象思维。

众多图书之下为什么写此书?

首先,自《Spring 5核心原理与30个类手写实战》和《Netty 4核心原理与手写RPC框架实战》出版以来,各位“汤粉”给我带来了非常多惊喜。这些惊喜给我带来的不仅仅是个人名誉,更多的是一种更大的社会责任。非常感谢各位“汤粉”的大力支持和认可,大家也非常喜欢我的“形象思维”。

其次,我传播知识的宗旨是:将抽象的知识形象化,将枯燥的知识趣味化,将难懂的知识通俗化。而设计模式又是大家公认的最为枯燥的知识,也是很难落地的。这一次,我将压箱底多年的干货都掏空,以此奉献社会,回馈社会。我总结多年实战经验,并结合经典框架源码分析设计模式,让设计模式真正能够为我所用,真正可以用来解决实际问题。

最后,再次感谢各位“汤粉”的支持,感谢为本书手稿提出宝贵修改意见的学员,也感谢电子社责任编辑董英团队的辛勤付出。

技术交流

关注公众号Tom弹架构

推荐《Spring 5核心原理与30个类手写实战》,4个月销量破万,连续占据畅销榜。

推荐《Netty 4核心原理与手写RPC框架实战》,上架3个月,销量突破10000册。

About

《设计模式就该这样学,基于经典框架源码和真实业务场景》随书代码示例工程

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages