我从未开发过需要使用设计模式的软件。根据保罗·格雷厄姆的Revenge of the Nerds论文,设计模式是抽象不够的标志。
直接引用他的话,“例如,在面向对象的世界中,您会听到很多关于“模式”的内容。我想知道这些模式有时是否是情况(c)(人类编译器)在工作的证据。当我在程序中看到模式时,我认为这是有麻烦的征兆。程序的形状应该只反射(reflect)它需要解决的问题。至少对我来说,代码中的任何其他规律性都是一个标志,表明我正在使用以下抽象: 不够强大——我经常手动生成一些我需要编写的宏的扩展。”
我只是想知道是否每个人都认为设计模式被过度使用,并且是代码中没有足够抽象的症状。
请您参考如下方法:
我不认为模式本身是问题所在,而是开发人员可以学习模式然后过度应用它们,或者以非常不合适的方式应用它们。
模式的使用是经验丰富的程序员自然会学到的东西。您已经多次解决了某个问题,您知道哪种方法有效,您使用该方法是因为您的技能和经验告诉您这是合适的。这是一种模式,没关系。
但是,对于技能不太熟练的程序员来说,同样有可能找到一种做事的方法,并试图将他们遇到的每个问题都塞进那个模具中,因为他们不知道任何其他方法。这也是一种模式,而且是邪恶的。