设计模式已经陨落了? - 开源中国社区
Float_left Icon_close
设计模式已经陨落了?
oschina 2014年03月11日

设计模式已经陨落了?

oschina oschina 发布于2014年03月11日 收藏 126 评论 69

腾讯云 十分钟定制你的第一个小程序>>>  

你现在是坐在一个程序员旁边吗?如果是的话,那么在你读下面的段落之前,有一个简单的实验。让他们到一边去,问问他们两个问题并记录下答案。首先问他们“什么是设计模式?”然后再问“说出你能回忆的设计模式的名字。”确保你是在一对一的情况下问的,否则在一个房间的其他程序员会插话。如果你是个程序员,在阅读下面的段落之前先写下你的答案吧。

设计模式是用来解决软件开发中重复出现的问题,久经考验的方法。当程序员遇到反复出现的问题时,他们通过应用合适的设计模式来解决问题。设计模式是 由最聪明的电脑科学家设计出来的,历经了时间的考验,它们被认为是好的方法。使用设计模式,程序员不需要自己想方法去解决所有的编程难题,他们可以使用设 计模式。设计模式节约开发时间,能开发出更灵活,可靠和健壮的软件。设计模式重用了概念的想法,解决方法的设计理念,考虑了他人的使用。它是非常棒的想 法,让许多事情更合理了。

但事实是:设计模式已经(几乎)陨落了。

设计模式应用的成功的先决条件是程序员在遇到重复出现的问题时能够意识到它们的存在。但如果程序员不能意识到问题的存在,他们将不会知道已经有人解 决过类似的问题了,也不会知道还有设计模式的存在。他们不是应用设计模式来解决这些普遍存在的问题,而是闭门造车,用自己的方法来解决问题。他们花了更多 的时间却写出可靠性差的代码。

设计模式的陨落是因为大部分程序员不足够了解它们,要解决问题时不能意识那些重复出现的问题的存在。如果他们不能意识到问题,他们就不能用设计模式来解决问题。

在面试中我要求过几千个程序员解释设计模式背后的概念,让他们写下每个他们能够回忆起的设计模式的名字。但相当多的程序员根本就不知道什么是设计模 式,或者他们的相关知识太薄弱,以致于就算碰到问题时,他们的知识也不够处理这些问题。很少的程序员可以说出他们对设计模式的理解。非常少的人知道多于四 五种。更少的人可以描述出设计模式能够解决的问题。这意味着大多数程序员在日常工作中遇到一些普遍的问题时,他们会用自己的方法去解决,而不是采用很普遍 的解决方法(设计模式)。

不了解设计模式的程序员们当读到用设计模式开发的代码时会感到迷惑。他们不能够理解其他程序员为什么要用这种方法来解决问题。他们面对这样一些非常普遍的问题时或者遇见设计模式的代码时,显得笨手笨脚。

设计模式也是一种通用语——一种程序员皆知的语言,可以用术语来阐述复杂的问题,便于让其他人明白。但设计模式已经陨落了;你不能用一种你不懂的语言来交流,大部分程序员都不能作为一种概念来使用它们。设计模式是一种很少人会说的通用语。

但设计模式还没有完全衰退,许多聪明的程序员仍然知道它们,使用它们。这些人是个例外。正是他们努力推广的结果,才能让MVC这个设计模式让所有程序员都熟知,就算是对设计模式知之甚少的人都熟知。

设计模式已经衰退了是因为大部分程序员没有意识到它在计算机科学中的重要性。许多雇主会考察应聘者对设计模式知识的理解。如果你是一个专业的程序 员,你应该对设计模式有深入的理解。你应该记住设计模式能够处理的问题,这样你碰到它们时,你能快速识别出它们。没有理由找捷径,也不能对它只一知半解。 去成为一个设计模式方面的专家吧——努力学习,成为真正的专家。我们需要更多的程序员成为设计模式方面的专家。如果有了足够的专家,可能有一天我们可以说 设计模式是一个成功。

原文链接: supercoders   翻译: 伯乐在线 - 唐小娟
译文链接: http://blog.jobbole.com/21578/

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:设计模式已经陨落了?
分享
评论(69)
最新评论
0

引用来自“caoglish”的评论

文章通篇在说明知道的人少,而不是设计模式本身的问题

这只是说明不是太多的人知道这个东西的存在,这只能说明有更多的普及教育工作要做,

要么翻译有问题,要么作者逻辑有问题

对于不了解设计模式的程序员来说,设计模式压根就从来没有存在过,何谈陨落。
0
天朝的评论基本都是水别人的,别人说到自己不懂的那就是别人是错的.....
0

引用来自“tmax37”的评论

在赶工期的情况下,又能有多少时间给你用设计模式呢?

正解。
0

引用来自“jonny123”的评论

引用来自“XM阿米”的评论

引用来自“独孤小败”的评论

引用来自“Brin想写程序”的评论

引用来自“tmax37”的评论

在赶工期的情况下,又能有多少时间给你用设计模式呢?

设计模式有点像武术里面的套路,大家先学习一下,真打起来,就是随着具体变化带着招数(模式)了。

哥们理解的很到位,赞

无招无式,变化多端,这就是独孤九剑

用金大侠的话说,“紫薇软剑,三十岁前所用,误伤义士不祥,乃弃之深谷。重剑无锋,大巧不工。四十岁前恃之横行天下。 四十岁后,不滞于物,草木竹石均可为剑。自此精修,渐进至无剑胜有剑之境。”都是一个过程的,模式和语言一样,无好坏之分,在于谁用和怎么用,这需要长期的积累啊

赞一个
0
不可能陨落,绕不过去。
0
设计模式明明就是解决编程语言硬限制用的。与其发明一套模式,还不如去修改语言本身,去掉那些硬限制
0
设计模式嘛 一直在学 也一直在Github上研究牛人的代码
0

引用来自“锋”的评论

引用来自“ericsoul”的评论

引用来自“jQer”的评论

mvc真的不算是设计模式

mvc不是设计模式,它是框架,它使用了设计模式,它使用了语言某些为复用代码而所具有的特性。

MVC 不是设计模式?对此表示怀疑。

如楼上某楼说的,设计模式是一种思想,也总结出了,26(没记错?)种思维模式出来设计模式给大家学习,甚至是直接套用。之后mvc可以说是设计模式的一种应用,或者体现。
0

引用来自“ericsoul”的评论

引用来自“jQer”的评论

mvc真的不算是设计模式

mvc不是设计模式,它是框架,它使用了设计模式,它使用了语言某些为复用代码而所具有的特性。

MVC 不是设计模式?对此表示怀疑。
0

引用来自“悠悠然然”的评论

我的总结:牛人就是有时候根本都不知道自己在用范式的人;生手就是要么不知道范式,要么千方百计使用范式的人。

点赞 +
0

引用来自“今幕明”的评论

标题党啊,我正在写关于设计模式的文章,相反,我认为设计模式无处不在?一个优秀的软件必然是包含设计模式,至少java和android如此。
http://my.oschina.net/vdroid/blog/205871

哈,这个文章作者本身思路有问题。设计模式和程序员修养混在一块了。
0
设计模式就是编程中的棋谱。
0

引用来自“悠悠然然”的评论

引用来自“贾珣”的评论

努力使用设计模式中~~

设计模式就像围棋的定式,可以用来提升水平,但是下棋的时候,与定式不会完全一致,与周围的子力情况及战略有密切关系,比如取地还是取势。
设计模式也一样,学习了肯定有好处,但是如果生搬硬套就有问题了。

恩恩~也想了很多呢,还好有时间实践~~
0
我们程序员中的大多数做的工作都是应用级别的开发,做的都是外包什么的,为了提高效率,用的都是框架,平时研究的都是框架的使用,框架的配置,然后拿来改改就交活,其实框架的实现过程必然有设计模式在其中,只是我们这些大众并不知晓罢了
0

引用来自“jQer”的评论

mvc和设计模式就是烧饼和早餐的区别

不错,烧饼随时可以吃,早餐却只能早上吃
0
我怎么觉得设计模式很重要呢
0

引用来自“苏大泉”的评论

引用来自“ericsoul”的评论

hui不会因为,大部分框架替程序员使用了设计模式。而程序员都在学框架,而忘了框架后面的设计模式。

因为80%的程序员都在做应用 而不是做框架 他们不会接触到那么多问题的

你说对了
0

引用来自“tmax37”的评论

在赶工期的情况下,又能有多少时间给你用设计模式呢?

这只是因为大部分程序员熟悉自己的一套,而不是设计模式。
0
这图看得有点纠结
0
这也有争论?无模式不成材,还是洗洗吃午饭吧。
顶部