为什么要学设计模式

1,337 阅读5分钟

为什么要学设计模式?

对于写代码这件事,设计模式不是必须的,但是要写好代码,设计模式是必不可少的。

我可以告诉你,大多数时候,在你参与项目的开发中,你很少会用到设计模式。为什么呢?使用设计模式,不是可以让代码质量更高咩? 原因有这么几点:

  1. 做项目其目的是为了赚钱,往往会压缩工期,留给你的开发时间不会很多,只需要你按时完成任务即可;
  2. 项目经理或者公司对开发人员的编码要求不高,大环境如此。
  3. 项目后续需求有变更,往往会重新评估工作量,如果之前的代码可扩展性较差,那就多评估点工时就好,这样的话,设计模式的优势并没有那么大了。

啰嗦这么多,简单地说就是:项目上不需要你花更多的时间写质量更高的代码。

既然设计模式,对于写代码不是必须的,同时工作中用到也很少,那么为什么要学它?

  • 为了自己写好代码;
  • 为了看懂别人的代码。

对于第1点,想不想写好代码,看个人追求,但是想成为高手,设计模式是必备的。如果天天写着CRUD代码,在自己的舒适区,写着自己习以为常的代码,干着毫无创造性的事情,你难道不会觉得无聊、无趣?也许你说,你并不想成为高手。不想成为高手难道就没事了?不见得,多年以后,如果你写的代码竟然与新手无异,你会不会觉得羞愧呢?如果心态不是特别特别好,为了摆脱这个结局,建议还是学好设计模式吧。

假如你就是对于写好代码这件事,无所谓。那么对于第2点,你逃不了。你不用设计模式,不代表你的同事不用,即使你的同事不用,你工作中所用到的框架肯定会用。不管是公司的框架,还是开源框架,往往都会使用多种设计模式,毕竟框架的性质就决定它肯定是可扩展的。为了看懂框架的实现,设计模式还是该学。

怎么学好设计模式

老实说,设计模式还是挺难的,掌握经典的23种设计模式难,在合适的场景,灵活运用设计模式更难。正因为困难,所以才有学习的必要,学会了,你就比别人强。

网上学习资料很多,但万变不离其宗,第一手资料应该是GoF的设计模式,只是不同的人学习后,然后通过自己的理解再表达出来。

学习方式大致分为两类:

方式一: 先学习设计模式的“公式“,然后用设计模式的“公式”去套用场景使用

不少教程走的是这种模式,以一个案例开始,然后用具体某种设计模式去解决它。

我觉得吧,这条路有点难走,首先要记住23种设计模式,而设计模式都是抽象的,要完全记住就有不少的挑战,记住还不算完事,然后还需要在合适的场景灵活运用。

方式二:通过推演设计模式的方式来顺便学会设计模式

我们学习设计模式的本质,并不是学会设计模式本身,而是写出好的代码。设计模式只是提供了一种参考答案,现实中遇到的问题何其繁多,23种设计模式终究还是有限。

如果我们在推演设计模式的过程中,渐渐学会了分析,自己慢慢就能设计出好的代码,最终不局限于某种设计模式,但又无意中暗含多种设计模式,岂不美哉!

另外再打个比方,比如数学里的公式,我们死记硬背,然后也能做出题目,但是我们对公式的理解并不深刻,知其然不知其所以然。

最后再说下,虽然我个人认为第二种方式比较好,但还是因人而异,对于学习的方式,有的人习惯看视频,而有的人习惯看书、教程,因此适合自己的才是最好的,以上只是个人见解,仅供参考。

如果您觉得方式二比较认同,那么可以看看下面的文章,每一种设计模式,都是通过一个故事来讲述的,在讲述故事的过程中,用代码来表达,与其他教程最大的不同是:不是直接套用设计模式来解决问题,而是通过一步步去改进代码设计,通过演化的过程,最终推演出设计模式,在此过程中,你可能对代码设计的理解更加深入。最后自然过度到设计模式本身,你会发现一切都是那么自然。

通过接下来的文章,希望可以帮助你较轻松地学习设计模式。整体的设计思路:窥全局(跳出来),看细节(钻进去)。

文章目录如下:

完整教程请移步 专栏:设计模式·观想录