AI时代对程序员的设计能力提出了更高的要求。

很多人说设计模式难学,是因为已有的经典图书的文字过于晦涩,代码难以理解,类似的教材或参考资料增加了认知负荷。

为此,李一鸣(笔名“爱码叔”)老师写作了《漫画设计模式》。这本书用生动形象的漫画和故事勾勒出一个个设计模式的应用场景,再加上简单易懂的代码,认知负荷被大大降低。帮助大家轻松在设计模式之路上打怪练级!

下面,让我们跟随李一鸣老师走进《漫画设计模式》,看看这本书创作的背后为读者们做了哪些贴心的设计吧~~

2024年3月18日,我终于完成了《漫画设计模式》的第一版书稿,历时7个月。当时的我如释重负,天真地以为大功告成,只差临门一脚。但没想到又过了近半年的时间,这本书才得以和读者见面。

100+幅漫画!带你轻松学会设计模式_参考资料

完成第一版书稿之后的这半年,我经历了校对修改、绘制人物表情、设计封面、绘制“设计模式之城”折页、排版、邀约推荐语等一系列的工作。全流程地参与到图书出版的过程之中,可以说是我人生中一份难得的体验。

2024年8月16日,我收到了出版社寄来的样书。看到自己的文字和漫画被印刷成出版物,心中确实十分开心和兴奋。但不知为何,这种感觉并没有刚签下出版合同时那么强烈。可能自己的心态已经被漫长的写作过程和无数次的修改磨平,此时的心情反而是水到渠成的平静。

为什么萌生写书想法?

这本书的写作始于2023年8月9日。那是盛夏的一个下午,我刚刚送完孩子们去上画画课,下楼时看了一眼微信,跳出一条添加好友的信息。点开后,发现是电子工业出版社编辑张爽老师的写作邀约。

在这之前,我已经写了8年技术博客,也曾经在慕课网写过付费专栏《Java并发编程学习宝典(漫画版)》。在收到写作邀约的前2个月,我画了10期《程序员涛哥》漫画。我已经在技术写作的道路上坚持了多年,也取得了一点小小的成绩,但“写一本技术图书”一直是我的最终追求。

张爽老师提出“希望我写一本漫画系列的技术图书”,这和我的想法不谋而合。我近年来一直在坚持写作“漫画+技术”主题的文章,也曾写出过10万+阅读量的技术文章,并且当时刚刚画了 10 期程序员漫画,对画画的信心大增。在程序员中,可能我是最会画漫画的;在画漫画的人中,我可能又是写代码最好的。为枯燥的技术加点料,说干就干!

经过简单的沟通,写一本漫画系列的技术书这件事就算定下来了。经历选题、列大纲、试写、审核、修改、选题申报……最终在2023年8月28日敲定书名——《漫画设计模式》。

为什么选择写“设计模式”?

  • 这首先来源于《设计模式:可复用面向对象软件的基础》Design Patterns: Elements of Reusable Object-Oriented Software)原作的经典,时至今日,我每次翻阅这本书,仍旧能有新的感悟。但是这本书的阅读有一定门槛,对于初学者来说存在一定难度。
  • 在我看来,设计模式非常贴近现实世界的场景。人类文明经过几千年的发展,早已沉淀了太多的“模式”,而软件设计模式自然也跳不出这个大圈子。通过使用生活中的例子类比设计模式,可以大大降低学习的门槛。
  • 更为重要的是,生活中的场景也非常适合创作漫画。因此,即使市面上已经有很多优秀的设计模式图书,我还是有信心写出一本独具风格的《漫画设计模式》。

为什么用“漫画”来写“设计模式”?

将时间的指针向前拨30年,我还清楚地记得爸爸带我去少年宫咨询画画课,但是由于和奥数课冲突,最终没有报名。说实话,当时我的心里非常失望,但也无可奈何。

我确实是有点画画的天赋在的。

我爷爷在年轻时,自己绘制皮影、刻窗花,即使80岁高龄还绘制了皮影人物谱。

我的父亲年轻时曾经放过电影,在这期间承担着公社宣传的工作,手绘了大量宣传幻灯片。

我小时候很喜欢看漫画,经常临摹书中人物。小学六年级时,我还模仿《七龙珠》,自己画漫画,不过画得很烂,只是为了打发漫长的假期时光罢了。后面随着学业压力加重,我画画的时间越来越少,便逐渐放弃了这个爱好。

但是,谁又能想到:在30年后,我能将专业和爱好相结合,完成这本《漫画设计模式》呢?这个世界真的很奇妙!

漫长而艰辛的创作过程

将时间的指针调回到2023年9月。此时,我正式开始了图书的创作过程。

刚接到写书邀约时的兴奋劲儿很快就过去了,写作的过程非常平淡和枯燥。要说最让我兴奋的事情,那莫过于为每种设计模式找一个生活中可类比的场景!

大多数设计模式比较好找,但有几个设计模式让我绞尽脑汁,在屋里绕了几圈也想不出来恰当的场景。但往往在最痛苦的时候,希望也就快出现了!可能脑海中突然灵光一现,就冒出一个非常契合的场景!紧接着灵感一股脑儿地全都冒了出来,我会立刻飞奔到电脑前一屁股坐下,恨不得一口气将这个设计模式写完。

100+幅漫画!带你轻松学会设计模式_设计模式_02

状态模式的生活场景——立体车库

绘制插图和漫画,是令我非常享受的一个过程。我会把项目上、生活中的经历都画进来。比如租房、我家小区的立体车库、大学时组装电脑、餐饮加盟、需求变更审批、上线流程……甚至在参加电子工业出版社博文视点的作者大会时,节目单中有一支叫作“新帽子”的乐队,也被我借鉴到了书中,改为了“新袜子”乐队!

100+幅漫画!带你轻松学会设计模式_设计模式_03

画画的时候,我一旦定了创意,就不再思考技术的内容,全心扑在画画这一件事上。脑子里想的是如何把人物画生动、画对透视关系、如何配色,等等。虽然画画的时间占到了写书时间的1/3,大大增加了我的负担,但也让我痛并快乐着。将技术讲明白,并且图文契合、相得益彰,这让我很有成就感。

在实际项目中,设计模式容易被不合时宜地运用,也就是我们常说的过度设计。在书中,针对“过度设计”这个难题,我会通过类似下面的插图来提醒读者。

100+幅漫画!带你轻松学会设计模式_设计模式_04

书中各种设计模式的类图,我全部采用手绘的方式,一笔一笔地画出来,在确保可读性的同时,增加一些趣味性,让读者更容易接受。

100+幅漫画!带你轻松学会设计模式_设计模式_05

本书采用“兔小白”和“熊小猫”对话的方式,展开讲解。在排版阶段,编辑建议将对话的人物名字改为人物头像,根据场景,呈现不同的表情。这是一个很好的主意,我立即动手绘制了“表情包”!虽然增加了大量工作,但是让对话变得生动起来。

100+幅漫画!带你轻松学会设计模式_设计模式_06

最后说说书中的点睛之笔—— “设计模式之城” 折页

100+幅漫画!带你轻松学会设计模式_设计模式_07

这是计划外的产物。在完成第一稿后,编辑要进行第一轮审阅。趁着这个时间空档,我冒出了这个灵感:既然设计模式就存在于日常生活中,那么我可以用一张城市图,画出与设计模式相对应的生活场景。这样不但方便读者记忆设计模式,而且读者可以使用此图快速找到与问题相匹配的设计模式。这张图我画了两周时间,耗费了大量心血。虽然很辛苦,但是很有成就感。

对了!折页中还有彩蛋,加入了我养的龙猫以及朋友家的猫猫、狗狗们!

100+幅漫画!带你轻松学会设计模式_设计模式_08

100+幅漫画!带你轻松学会设计模式_参考资料_09

在这本书的写作期间,家人、朋友给了我很多支持和帮助,十分感谢你们!感谢电子工业出版社博文视点的工作人员,尤其是我的编辑张爽老师,在长达一年的合作中,给了我很多建议,给我改了很多版稿子。希望这本书不辜负这么多人付出的辛勤汗水,能够得到读者的喜爱,并切实为读者提供帮助!