你现在坐在程序员旁边吗?如果是,那么在阅读以下段落之前先做一个简单的实验。请他们站到一边,问他们两个问题并记录答案。首先问他们“什么是设计模式?”然后“说出你能记得的设计模式的名称。”确保你在一对一的情况下提问,否则房间里的其他程序员会插话。如果你是程序员,请在阅读以下段落之前写下你的答案。设计模式是用于解决软件开发中反复出现的问题的久经考验的方法。当程序员遇到反复出现的问题时,他们会通过应用合适的设计模式来解决这些问题。设计模式是由最聪明的计算机科学家设计的,并且作为良好实践经受住了时间的考验。使用设计模式,程序员不需要自己想办法解决所有的编程问题,他们可以使用设计模式。设计模式可以节省开发时间并带来更灵活、可靠和健壮的软件。设计模式重用概念的思想,为解决方案设计思想,并兼顾他人的使用。这是个好主意,可以让很多事情变得更合乎逻辑。但事情是这样的:设计模式(几乎)已经死了。成功应用设计模式的先决条件是程序员在遇到问题时意识到重复出现的问题。但是如果程序员没有意识到问题的存在,他们就不会知道有人已经解决了类似的问题,也就不会知道有设计模式存在。他们不是应用设计模式来解决这些普遍存在的问题,而是闭门造车,使用自己的方法来解决问题。他们花更多时间编写不太可靠的代码。设计模式的衰落是因为大多数程序员对它们的理解不够深入,以至于在尝试解决它们时没有意识到反复出现的问题。如果他们不能识别问题,就不能使用设计模式来解决它。在采访中,我要求成千上万的程序员通过写下他们能回忆起的每个设计模式的名称来解释设计模式背后的概念。但是相当一部分程序员根本不知道什么是设计模式,或者相关知识薄弱,即使遇到问题,知识也不足以应对。很少有程序员能说出他们对设计模式的理解。很少有人知道超过四五个。很少有人能够描述设计模式可以解决的问题。这意味着当大多数程序员在日常工作中遇到一些常见的问题时,他们会使用自己的方法来解决,而不是采用非常常见的解决方案(设计模式)。不了解设计模式的程序员在阅读用设计模式开发的代码时会一头雾水。他们无法理解为什么其他程序员使用这种方法来解决问题。遇到这种很常见的问题,或者遇到带有设计模式的代码,他们就笨手笨脚了。设计模式也是一种通用语言——一种程序员知道并且可以用其他人可以理解的术语来表达复杂问题的语言。但是设计模式已经死了;你无法用你不懂的语言进行交流,大多数程序员也无法将它们作为一个概念来使用。设计模式是一种很少有人使用的通用语。但是设计模式并没有完全消失,许多聪明的程序员仍然知道并使用它们。这些人是个例外。正是他们努力推动的结果,使得MVC设计模式能够为所有的程序员所熟悉,即使是那些对设计模式知之甚少的程序员。设计模式已经衰落,因为大多数程序员没有意识到它在计算机科学中的重要性。很多用人单位会考查应聘者对设计模式知识的理解程度。如果您是专业程序员,您应该对设计模式有扎实的理解。您应该记住设计模式可以处理的问题,以便您在遇到它们时可以快速识别它们。没有理由走捷径或只有一半知道。Gobecomeanexpertindesignpatterns——努力学习,成为真正的专家。我们需要更多的程序员成为设计模式方面的专家。有了足够多的专家,也许有一天我们可以说设计模式是成功的。原文链接:supercoders翻译:伯乐在线-唐小娟翻译链接:http://blog.jobbole.com/21578/
