设计模式到底有多重要

其实作为一个开发人员,不管是前端或者后端,对于设计模式不知道大家是否有认真的学过。强哥一开始,对于设计模式的态度其实一直是感觉可有可无的。大学没有相关课程,学习Java,懂得面向对象,自学Java web毕业后顺利找到工作。工作期间,就算技术功底不行,只要你不傻,拿着前辈的代码,对于新的一些简单的需求,通过ctrl+c,ctrl+v解决日常的工作还是没有问题的。

当然,作为一个热爱学习,明白互联网更新迭代日新月异,新技术此起彼伏的新时代的接班人。我们经历了从最开始的前后端不分离,写JSP代码,到前后端分离,前端不再是简单的html+js+css而是涌现出各种新的架构:React、Vue、Angular……后端也从原来的单体项目到大型的分布式系统:dubbo、spring cloud……各种各样的新技术让我们深刻体会到了老祖宗说的“学海无涯”的道理。

于是我们对新技术就特别的向往,我们在网上到处搜索相关的书籍、视频教程。网上关于这些新知识的教程也越来越多,因为这些东西很火,也很叫卖。

但是,不知道有多少人有这样的体验,当你学习了这些新的热门框架,但是由于公司目前的项目体量不够大,工作中能用上这些新框架的机会比较小。又或者,就算是用上了,作为一个底层的程序员,我们其实也只是使用框架,而搭建框架的核心工作还是雨女无瓜。而我们的日常工作还是主要集中在处理业务逻辑上,毕竟,这个才是公司最最需要你干的事情。

于是,在日复一日的工作中,你慢慢的开始迷茫,感觉不到自己在编程方面有所提升。每天的CRUD也是没有什么趣味,可是又要怎么改变现状呢,怎么提升自己呢?

再问你个问题,你是否有感觉自己在一些复杂业务逻辑的开发中,写的代码又杂又乱,像老太婆的裹脚布又长又臭。同时,扩展性也很差,一旦需要在原来的结构上添加一个新特性,就会牵一发而动全身,到处都要修修改改。

然后,你又慢慢的看了一些大神的代码,你由衷的发出感叹,为什么大神就是能够把代码设计的这么优美可扩展。他们是怎么知道什么时候要用接口处理多个实现的问题,什么时候要用到一个类工厂来生成多个对象。

没错,说了这么多,其实就是想告诉大家,在你勤学新框架的时候,头疼无法提升自己编码水平的时候,请你把一部分重心用在学习内功上。所谓的内功其实就是那些变化不大,但是打起架来却相当有用的知识,比如算法、设计模式等等。

有人也许又会说,强哥,其实我一直都知道要学习内功,学习算法和设计模式这些知识,可是,看到一些新框架的出现,就心里痒痒,想要马上学。而至于设计模式什么的,慢慢的以后再搞也没什么,毕竟工作中不用工厂模式,策略模式什么的,我还是能顺利的完成工作。

于是乎,你有没有发现,你陷入了一个死循环,学新框架,用上了,然后涉及不到核心,然后接着写又长又臭的业务代码,心里难受感觉没提升,日复一日,然后又冒出新框架,开始学习新框架,工作用不上,过段时间新学的就忘了,然后还是日复一日的继续写又长又臭的代码……。

好吧,其实强哥之前在看《Java特种兵》这本书的时候,就对一句话印象很深:“不羡招式,勤修内功”。学习设计模式、算法类的内功心法,短期内看不到收益,可是慢慢的,日积月累,你肯定会发现,你的编程功底会有质的飞跃。

举一个例子:去西餐厅点餐,A告诉服务员“我要一份涂了奶酪及果酱的白面包,加了香草冰淇淋的巧克力汽水、加了培根的火烤起司三明治、鱿鱼色拉吐司、一杯加了奶精和两块糖的咖啡……哦……还有一两个面包夹一个鸡排!”。而B告诉服务员“我要一份C.J怀特、一个黑与白、一份杰克·班尼、一份Radio、一杯普通咖啡还有给我一个汉堡!”

其实两个人点的餐是完全一样的,可是A的话却比B多出了一倍,而且服务员都要不耐烦了。什么是B有的,而A没有的?答案是,A和服务员的“共享词汇”,A却不懂这些词汇。共享的词汇不仅方便顾客点餐,也让服务员不用记太多东西,毕竟谁会记得住你说出来的各种特殊组合方式。

这就好比我们在看大神的代码时,如果你懂得设计模式,就好比你们拥有共享词汇,你在看到他们的代码时,你会发现哪哪哪用了策略模式,哪哪哪用了工厂模式等等。而懂得了这些,你就能更好的理解大神代码为什么如此精致而可扩展。慢慢的你也能学会如何使用。而如果不懂设计模式,你也就只能望洋兴叹罢了。

所以,设计模式让你和大神间有了共享的词汇,一旦懂得这些词汇,和大神的沟通就会变得容易,同时,当你和其他开发讨论设计模式的时候,你能够用更少的语言更容易的解释你的实现,也会促使那些不懂的人想要学习设计模式。设计模式也可以把你的思考架构的层次提高到模式层面,可让你待在“设计圈子”久一点,而不是被压低到对象与类这种琐碎的实现细节上。

相比一些库和框架,设计模式不会直接进入你的代码中,而是先进入你的“大脑”中。一旦你先在脑海中装入了许多关于模式的知识,就能开始在新设计找那个采用他们,并当你的旧代码变得如同老太婆的裹脚布的时候,可以使用他们重构旧代码。

哈哈,当然,最后的也是最重要的,强哥之后会开始推送一些设计模式的文章干货,请大家多多关注哦。不过大家也不要觉得这就是一篇铺垫文,是在欺骗大家,真的,上面所说,绝对是很多人有所经历和感受的。如果想要提升自己成为大神,懂得设计模式也是必修之路。

而且发现了没有,其实不管是前后端,这些内功知识是不分界的,都需要用到,就算你再不重视,面试的时候也会用到的不是吗?这也是你和面试官的共享词汇呐!!

关注公众号获取更多内容,有问题也可在公众号提问哦:

强哥叨逼叨

叨逼叨编程、互联网的见解和新鲜事

发布了54 篇原创文章 · 获赞 69 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/seanxwq/article/details/99591814