记得我第一次独立做一个项目的时候,当时没什么经验,开始之前也没有什么规划,想到需要啥功能就去实现啥功能,最后做到一半的时候发现进行不下去了。

一会发现要给对象添加新属性,于是改对象、改构造函数、然后又发现数据库的表格设计的也不对,需要改数据库,添加新功能的时候,不仅要写新功能的代码,前面写的所有代码相应都要改一下……

这就是吃了没有把设计模式学好的亏,其实我们把程序员分成两类,一种是懂设计模式,一种是不懂设计模式,不懂设计模式的程序员不管写了多少行代码,可能都体会不到编程真正的美。

比如一个系统有好几种角色:老师、同学。工厂模式可以帮你实例化,就算未来可以能还有新的角色,也不用多添加或者改动原来的一行代码。

给对象添加新功能,装饰模式帮你搞定,对象太大,想要提高响应速度,可以考虑用代理模式。

你看设计模式就像是招式、套路一样,你在开发的过程中遇到的大多数问题都有对应的招式帮你解决,这样我们做起事情来就会轻松许多,将来别人来维护你以前写的代码也会更容易一些。

基于这些原因,你应该知道学好设计模式对程序员有多重要了。

设计模式就像是编程界的招式、套路一样,你在开发的过程中遇到的大多数问题都有对应的招式帮你解决。

你可能觉得我巴拉巴拉说了一大堆,但是你自己真正在写代码的时候又是一脸蒙:为什么我写的代码用不到设计模式?究其原因是你的代码经验不够。

想一下设计模式是怎么来的?

上个世纪四个大男人搞了一个组合叫 GoF,并出版了一本书,这本书共收录了23种设计模式,后面逐渐被人熟知。这四个人从大量的代码实践中总结了一套方法论(写代码的套路),而我们作为一个在学校的学生或者刚工作的新人,可能连代码都写的少,怎么可能轻松快速地掌握这么多设计模式。

所以说你学完了设计模式,但是还不会运用到日常的代码实践中,这个是很正常的,因为代码经验还不够。

那还学不学?

当然要学,因为面试的时候有可能会问到。设计模式的理论知识我们还是要打好基础,需要掌握这些知识点:

  • 设计模式的六大原则:单一职责、里氏替换、依赖倒置、接口隔离、迪米特法则、开闭原则
  • UML 基础知识
  • 设计模式三大分类:创建型、结构型、行为型
  • 常用设计模式基本原理

经典设计模式总共有23种(现在远不止23种了,还有一些变种),全部掌握难度太大了,我们只需要掌握一些常用的就好了,必须要掌握的我用小红旗已经标出来了。

img

怎么学?

网上关于设计模式的学习资料非常多,质量也是参差不齐,大家找的时候可要擦亮眼睛。

之前我们学长跟我说过一句话,让我印象很深刻,他说:“看书要比自己到网上找教程要高效很多,书上的知识更成体系,作为一个初学者,把该方向的一本经典书看完,问题差不多就解决了95%。

在看书之前我还是推荐你熟悉一下 UML 的理论知识,因为你如果不懂 UML 那任何一本设计模式的书你都可能读不下去, UML 是设计模式的前提。

UML 学习网站:

https://www.w3cschool.cn/uml_tutorial/

不要花太多时间学习 UML,简单理解入门即可。

假设你已经入门 UML 了,那下面的这些书你可以考虑学习一下了:

1、《Head First 设计模式》

img

据我所知,不少高校用的教材就是这本书,这本书里,通过一些例子,让你快速带入到常见的设计问题,然后循序渐进的提出解决方案,提出对应的设计模式和设计原则,阅读难度低,而且理解起来很容易,非常推荐阅读。

2、《大话设计模式》

image-20211128152820143

大话系列是国内非常经典的系列丛书,有众多粉丝。这本大话设计模式以对话的形式讲解知识,在当时可开创了先河。虽然书中有些例子比较牵强,但任然不失为一本入门的好书。

3、《图解设计模式》

image-20211128152849993

图解系列是日本的一位作者写的,有一本图解 HTTP 非常经典,这本图解设计模式也是类似的风格。由于是翻译过来的,书中有些例子可能听起来比较奇怪,貌似翻译过来的技术书都有这个问题。

这几本书都要看吗?

当然不是,我记得我们老师曾经说过:“作为一个新手,找一本该方向的书看完,问题差不多就解决了90%。”至于说看哪一本,你可以找对应的电子书,挑一个章节试读一下,符合你的胃口就选择这一本继续读下去,每一本书我都留了电子书下载地址。

如果你已经有几年的编码经验,又想把代码写好,建议你多挑几本读读,吸收每本书的精华。