束缚程序员工资的,从来不是什么算法和设计模式

作者 | Java圣斗士 | 原创图文,转载请注明出处

设计模式

过度神秘化的设计模式,更应服务于生活的算法

一提到设计模式,不论是刚入行一两年的小菜鸟,还是工作十年以上的资深业界大佬,都会不寒而栗,倒吸一口冷气。

这是一个来自于《设计模式》一书中的神秘概念,在那个“混沌的”年代,编程界的四位大佬——GOF四人组,总结而得。阅此书者,如能习得一招半式,也会燃起剑指架构师宝座的雄心!

但是,为何说10年以上的资深大佬也会倒吸凉气?

就是因为设计模式的变化无常,招无定式。

相比于其他的一些语法概念,二十多种设计模式更像是武侠小说中的内功心法。

倚天屠龙记剧照

常用的设计模式大概有5到10种,包括但不限于以下这些:

单例模式、工厂模式、适配器模式、装饰器模式、代理模式、观察者模式、MVC模式、策略模式等等。

瞧瞧这些极富画面感的名称,不得不让无数Java工程师望而却步。

就拿最简单的“单例模式”来说,光是解决性能空间的问题,就可以衍化出四五种写法(参考《情景对话,一篇带你参悟单例模式》),更不要说抽象了又抽象的“抽象工厂模式”。

而算法,光是研究算法就已经足以另辟一个新的职业领域——算法工程师

数据结构和算法一直是程序员绕不开的话题,和设计模式一样,任何IT大厂都不约而同的要求服务器端程序员有一定的算法和数据结构知识。

但我要说,不论是设计模式还是算法数据结构,都被我们看的太过神秘。

设计模式是一种软件编程中会用到的最佳实践,是为了更好的构建出更通用、更健壮、更不易出错的代码。

如果把时间拉回到我们曾经备战高考的那段日子,就会发现,设计模式不就是语文作文中的各种优秀作文结构套路吗?比如什么议论文的总分总、三段式

作文

老师总是告诫我们要善用这些文章结构,让阅卷老师更快速地领会文章主旨,发现我们文中的优点,从而获得高分。而设计模式同样具有相同的作用,比如工厂模式中的命名factory、单例模式中的getInstance()方法,等等,不仅可以使我们的代码结构更加紧凑,同时也具有见名知意,达到一种自解释的效果!

当我们站在巨人的肩膀上一层层揭开设计模式和算法的面纱,就会发现,这些前人总结出来的“内功心法”其实都源于生活。

一个音乐高材生,给整个Java界带来了春天

“Don't Reinvent the Wheel”。

这是西方国家的一句谚语,意思是——不要一遍一遍地发明轮子。这个轮子原理被Spring框架的制作者再一次提来,并作为Spring框架的核心哲学

其自身最大的核心特性之一IOC就是基于对象管理来提供开发者服务的,包括与其他各种技术的集成,都在不遗余力地传达着一个思想——“我已经帮你把你需要的东西都管理好了,你直接用就是了,不要重复造轮子!”。

由于Spring在Java界的霸主地位,也让这句清新脱俗的谚语传入国内,成为很多Java开发者信奉的真理!

然而,这一切的缔造者,却是一个音乐学博士——Rod Johnson。

Rod Johnson

他是Spring Framework的创始人。“很难想象Rod Johnson的学历,真的让好多人大吃一惊,他是悉尼大学的博士,然而他的专业不是计算机,而是音乐学。不明白那个秃顶的脑袋瓜里怎么会同时拥有如此高深的计算机技术和高雅的艺术细胞,只能惊为神人。”

世界上很多大佬,并不是随随便便就能成为神话,看看这位大神的脑袋,我们就能知道,对于科研工作,他究竟付出了多少个燃烧脑细胞的日日夜夜。

很多人都把自己局限于一个很狭小的领域。

而我觉得,人的潜力真的比你想象的要大,就算是音乐软件开发如此八竿子打不着的两个领域,依然可以有人做到凤毛麟角。

我们还有什么理由畏难惧苦呢?

好好学学这位大叔吧!

限制我们工资的,不是算法和设计模式,而是你的决心!人人都有改变命运的本领

要说聪明与愚钝,自古有之。

聪明的人有改变自己能力的本事,然而却因此而缺乏了一颗持之以恒的决心,最后也变得和普通人一样碌碌一生。

而愚笨的人,由于意识到自己的才智不如常人,却加倍努力,不畏险阻,最后终有所成。

在Java程序员求职面试的时候,经常会被问到一些常用设计模式,其中最为多见的是单例和工厂模式,还有就是会问到在工作中使用过哪些设计模式,或者Spring中用到了哪几种设计模式。

算法的话,当然是需要能说得上一些Map和Collection的实现原理,以及冒泡排序等等。

这些看似工作中根本用不到的知识,为什么能成为面试中的核心必考点?

原因我觉得并不总是直接考察一个人的硬实力,也同样在考察Java程序员想要变得优秀的决心和未来规划。

说到未来规划,你有自己的规划吗?

5年以内工作经验的Java程序员,只要不是特别想做一条咸鱼,必然会在学习的道路上钻研设计模式和算法相关知识,面试这些知识,也恰恰是在考验你是否有过这方面的学习计划,同时检验你实施这些规划的进度。

我依然相信这世界上存在我们学不会的东西,但在日常生活中往往是很难碰到的。

围绕我们的困难,往往都是纸老虎,设计模式如此,算法更是如此。

任何大的难题都可以拆解成非常小的问题,也就是问题的本质,这些本质其实都非常原始,可以和生活中的很多事物产生联系。

为什么说程序员聪明?

就是因为程序的世界,往往就是现实世界问题的一种0101的翻版。

我们用代码模拟了这个世界,同时也在改变着这个世界。

世界都可以被程序改变,为什么我们却要停滞不前?所以,我相信,只要有所决心,人人都有改变自己命运的本领,愿所有IT工作者勇往直前!

往期精彩:

情景对话,一篇带你参悟单例模式

情景对话,一篇带你参悟工厂模式

能否成为架构师?抽象工厂模式,真正考验你抽象能力的时候到了

为了降低抽象工厂模式的复杂度,我决定这样做

对话式情景剖析,String被final修饰的真正原因!一篇足矣

---欢迎关注【Java圣斗士】,我是你们的小可爱(✪ω✪) Morty---

---专注IT职场经验、IT技术分享的灵魂写手---

---每天带你领略IT的魅力---

---期待与您陪伴!---

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();