Artima Developer的总编 Bill Venners在对Erich Gamma的一次采访中,
仔细讨论了Design Pattern(设计模式)的问题。当我们做设计的时候,我们首先会想到使用设计模式。那么如何使用设计模式?如何用设计模式进行思考?是否当你解决一个问题的时候,必须要使用设计模式?
Bill Venners将把这次访谈的内容分多次,发表在Artima Developer上。Erich Gamma的论述确实精彩,他不仅谈到了当初如何进入Design Pattern这个领域的过程,也谈到了在他开发JUnit的过程中,如何设计JUnit,以及如何在JUnit中使用Design Pattern。
“I think patterns as a whole can help people learn object-oriented thinking: how you can leverage polymorphism, design for composition, delegation, balance responsibilities, and provide pluggable behavior. Patterns go beyond applying objects to some graphical shape example, with a shape class hierarchy and some polymorphic draw method. You really learn about polymorphism when you've understood the patterns. So patterns are good for learning OO and design in general.”
“Patterns are distilled from the experiences of experts. They enable you to repeat a successful design done by someone else. By doing so you can stand on the shoulders of the experts and do not have to re-invent the wheel. ”
“Do not start immediately throwing patterns into a design, but use them as you go and understand more of the problem. Because of this I really like to use patterns after the fact, refactoring to patterns. ….. Trying to use all the patterns is a bad thing, because you will end up with synthetic designs—speculative designs that have flexibility that no one needs. These days software is too complex. We can't afford to speculate what else it should do. We need to really focus on what it needs. ”
“We didn't just string patterns together when we designed JUnit. We did it test-driven, starting with a test that we wanted to succeed and once it passed we looked into how we could improve the code. ”
Who is Erich Gamma?(这个问题好像问的有些傻)
《Design Patterns: Elements of Reusable Object-Oriented Software》,《Contributing to Eclipse: Principles, Patterns, and Plug-Ins》的作者之一;JUnit的作者之一;Eclipse JDT的负责人。他目前在IBM的瑞士苏黎世OTI实验室工作。
[Update]感谢的lxwde中文翻译。
第一次访谈的详细内容。
Artima Developer
CSDN 上的中文翻译
Email this store to a friend (send a short email with a subject to this story)
Subscribe to kukooBlog (subscribe kukooBlog's RSS feed)
Send me feedback on this story
Design Pattern
Programming