《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框架实战》出版以来,各位“汤粉”给我带来了非常多的惊喜。这些惊喜不仅仅只是个人名誉,更多的让我感受到了一种更大的社会责任。非常感谢各位“汤粉”的大力支持和认可,大家也非常喜欢我的“形象思维”。 其次,我传播知识的宗旨是:将抽象的知识形象化;将枯燥的知识趣味化;将难懂的知识通俗化。而设计模式又是大家所公认的最为枯燥的知识,也是很难落地。这一次,我将压箱底多年的干货都掏空,以此奉献社会,回馈社会。我总结多年的实战经验并结合经典框架源码分析设计模式,让设计模式真正能够为我所用,真正可以用来解决实际问题。
最后,再次感谢各位“汤粉”的支持,感谢为本书手稿提出宝贵修改意见的学员。