|
此文章由 zhanglianwei 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 zhanglianwei 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 key 于 2011-10-29 14:15 发表 ![](http://www.oursteps.com.au/bbs/images/common/back.gif)
求出处,谢谢。
忘了在哪里看到的了。
不过反对滥用设计模式很普遍了,我随便Google都Google出来一段:
“ 1995年,GoF(以Erich Gamma为首的“四人帮”)所著的《设计模式——可复用面向对象软件的基础》(Design Patterns--Elements of Reusable Object Oriented Software)一书出版了。这本书在面向对象编程/设计领域具有划时代的意义。不夸张地说,这本书就是面向对象程序员的红宝书,对于面向对象程序员来说,应该人手一册。没有读过这本书,对于面向对象的理解还停留在很低的层次;读过了这本书,才算真正理解了一些面向对象的精华。很自然,这本书一时间洛阳纸贵,后来还陆续出现了很多以不同语言的实例来解释GoF设计模式的著作,例如《Java设计模式》、《C#设计模式》等等。
但是物极必反,任何事情都不能走极端,否则就会造成不良后果。在项目开发不适当的时机使用设计模式,或者在不适当的场合使用设计模式,都会给项目开发带来很多不必要的复杂性,从而增加大量的沟通成本,甚至会严重影响开发效率。以前听说过一个笑话:一个程序员发邮件给Erich Gamma,说在他们最近的一个项目中,他尽力使用了23种GoF设计模式中的21种,还有两种怎么也找不到适用的场合。他感到很苦恼,希望能够得到 Erich的帮助。
这个笑话说的当然是一种最极端的情况。尽管如此,大量的实践证明,不当使用(不适当的时机、不适当的场合)设计模式会给项目开发带来很大的麻烦。自己挖坑把自己埋进去,这是很多一知半解的面向对象架构师经常做的事情。言必称架构、言必称模式正是中毒很深的迹象。
1998 年出版的《反模式——危机中软件、架构和项目的重构》(AntiPatterns——Refactoring Software, Architectures, and Projects in Crisis)这本书对于滥用设计模式的趋势来说可谓是一剂很及时的解毒良药。反模式其实也是一种模式(正如设计模式是一种模式一样),不过它主要考察的是这种模式所带来的不良后果。这本书系统地总结了很多种类的反模式,以及如何识别出这些反模式并且加以避免。这些反模式涵盖了软件开发、软件架构和项目管理等方面。虽然这本书并不是专门针对设计模式展开讨论的,但是不当使用设计模式很多时候都会导致出现反模式。平衡感是优秀的面向对象架构师应该拥有的素质,《反模式》这本书可以使架构师拥有更好的平衡感。
1999年出版的Martin Fowler所著的《重构——改善既有代码的设计》(Refactoring: Improving the Design of Existing Code)这本书对于如何改善现有代码的设计提出了非常具体的解决办法。Martin Fowler在这本书中认为,不应该在最初编码时就使用设计模式,而应该将设计模式作为重构的目标。实际上,设计模式正是Erich等人在对一些开发框架进行重构的过程中总结出来的。后来2004年出版的Joshua Kerievsky所著的《重构与模式》(Refactoring to Patterns)在《重构》的基础上更加详细地探讨了重构与设计模式之间的关系,以及如何在重构的过程中逐渐引入设计模式。
2000年出版的Kent Beck所著的《解析极限编程——拥抱变化》(Extreme Programming explained--Embrace change)响亮地提出了简单设计、不为明天而设计的口号,进一步为滥用设计模式的趋势消了毒。 ” |
评分
-
查看全部评分
|