我硕士毕业参加工作后,回顾自己求职的历程,求职路上通过的一道道“关卡”历历在目。例如,在应聘华为公司的职位时,面试官问了我工厂模式的问题;在应聘百度公司的职位时,面试官让我写策略模式的范例;在应聘字节跳动公司的职位时,面试官挑出单例模式的问题让我回答……我当时仅对常见的设计模式比较熟悉,被面试官问到陌生的设计模式及设计原则时,由于缺乏相应知识,没能当场回答出来,以至于错失许多好的机会。
目前,国内基于C++编写的设计模式的图书较少。但是,不管是校园招聘还是社会招聘,与C++相关的岗位都很多,例如SLAM算法工程师、C++开发工程师、游戏开发工程师等。
从我的面试经历来看,凡是与C++相关的岗位的面试,设计模式的考核是必不可少的。求职者若熟悉设计模式,在参加校园招聘面试时会更加从容,这也是一个加分项;在参加社会招聘面试时,求职者若理解并能够运用设计模式,会更加受招聘单位青睐。
因此,为了帮助更多人学习设计模式,我基于市场调研和自己的体会,在工作之余写了一本基于C++介绍设计模式的书。目的是:一方面可以帮助读者学习设计模式的知识;另一方面可以帮助更多求职者,尤其是参加校园招聘和社会招聘的求职者,让他们理解并能够运用设计模式,从而顺利获得心仪的Offer(职位)。
本书面向的读者:
(1)有一定C++基础的读者;
(2)准备参加校园招聘或者社会招聘的本科生或研究生;
(3)需要学习架构和重构架构知识的软件开发人员或算法工程人员;
(4)大专院校相关专业师生;
(5)培训学校的师生。
本书主要有以下特色。
● 本书基于C++介绍设计模式,对应聘与C++相关的职位的读者来说,通过本书能快速学习设计模式。
● 在讲解设计模式之前,我会先介绍相关理论知识,再通过趣味性强的故事引出后续代码,代码实现部分会分步骤将故事中对应的设计模式一一展开,“手把手”教读者掌握设计模式的知识。
本书所讲的例子浅显易懂,为了使读者高效学习本书内容,特给出如下学习建议。
首先,读者应了解每一个设计模式的概念。在什么情况、什么场合下用哪一种设计模式?没有应用设计模式的代码是什么样子,用了之后又是什么样子?设计模式带来的好处是什么?带着这些疑问阅读本书,读者对设计模式的理解会更加深刻。
然后,读者可以画出每一种设计模式的UML类图,了解各个趣味故事中讲解的设计模式中变量之间的关系,对设计模式代码实现的步骤能够做到心中有数。
最后,读者要能够将设计模式之间的联系和区别提炼出来,针对每种代码至少可以运用两种设计模式实现,并且能够说明每一种实现的目的。
小码路与大不点是本书故事中的主人公,本书所有的故事均围绕这两位主人公展开。
思而不罔——本部分归纳C++设计模式的关键技术,并拓展设计模式的内容,便于读者加深理解。
温故而知新——本部分总结相应章的重点内容,以及通过问题引出下一部分的内容,读者带着问题去学习会更加高效。
由于笔者水平有限,书中难免存在不足之处,恳请读者批评指正,以便笔者完善本书。
读者可通过以下方式联系到笔者。
● 邮箱:lyy3690@126.com。
● 微信公众号:码出名企路。
● 知乎和哔哩哔哩账号:码出名企路。
“站在巨人的肩膀上,你可以看得更远”,软件设计模式自被提出至今,经过众多前辈的总结和补充。在前辈知识的基础上,我结合自身工作经历,历时3年完成了本书,在此要感谢太多太多的人。
入职小米公司以来,我经历了许多的项目,在开发项目期间得到了许多同事的帮助,感谢我的组长、组内的每一位同事。
感谢我的研究生导师,他带我走进了计算机的世界,他使我领悟到:代码可以改变生活,科技可以使人更加幸福。
感谢张涛,他是我成长路上的指路人,在他的鼓励和帮助下,我成功完成了本书,遇见他是我的幸运。感谢默默付出的人民邮电出版社的编辑们,你们的共同努力和辛苦审核使本书得以顺利出版。
最后,我还要感谢我的亲人、朋友的陪伴和鼓励,祝愿他们永远健康、幸福。
笔者