哪种设计模式最适合迭代开发?

时间:2008-09-23 08:32:50

标签: oop design-patterns

在TDD或迭代模式下构建应用程序是否有最优选的设计模式?

5 个答案:

答案 0 :(得分:7)

我认为这个问题可以改写,所以用这些词语更有意义:

“在使用测试驱动和增量开发策略时,哪些架​​构模式和策略对于实现灵活性非常有用?”

我的答案是:帮助你解开你的clases和组件的模式,例如:

  • Inversion of Control and Dependency Injection - 帮助您保持类和组件之间的依赖关系与特定实现分离,这些实现在运行时(或启动时)之前被解析,允许使用存根来实现尚未实现的功能和单元测试

  • Facades - 帮助您隔离组件,为它们之间的交互提供定义良好的接口,减少耦合。

  • 工厂和其他creational patterns - 它们为您提供了负责实例化对象的代码部分的灵活性。

还要记住增量和迭代开发的咒语之一是'Do the simplest thing that could possibly work'。不要过度工程。

根据你的要求,它是否有意义?

答案 1 :(得分:4)

不要混用不同的东西。您可以在适用时使用模式,从而节省您的时间和精力,并使您的代码看起来更加标准。 与您的开发方法无关!

但是,您可能想要强调应用程序架构中的一些内容:

  • 使事物非常模块化。拥抱松耦合。
  • 在模块之间定义明确的概念边界。从概念上讲,我的意思是一开始就应该清楚,感觉很自然。一位随机的程序员问到它应该回应“哇,显然你是怎么做到的!”。
  • 从小处开始。不要试图制作ZOMG-这将是最好的,最通用的类​​库和程序 - 无论如何。使事情有效,然后扩展,但仅在必要时。
  • 说服自己YAGNI(你不需要它)。不要做你不确定你必须做的事情。这并不意味着拖延或其他什么。这意味着不要做事,因为“我不知道,它可能在将来有用”,“它在技术上很花哨”,“我会包括它以防万一”。
  • 干 - 不要重复自己。确保不会遇到代码重复问题。考虑代码生成器,良好的抽象以及整个团队的高效沟通。

答案 2 :(得分:2)

我不确定这是一个有意义的问题。但我不会让那阻止我......

完全有可能特定模式可能变得明显,因为它适合于您的应用程序设计的各个方面,因为它在您选择的敏捷过程中发展,但是(希望不会错误地)引用Ron Jeffries,“代码会告诉你“。

编辑:但如果你想要一个明确的答案,那么Bridge。这是一个很好的。或访客,我也喜欢那个。或者大多数以“F”开头的。 :)

答案 3 :(得分:-1)

设计模式是帮助解决特定类型问题的工具。模式的使用受到需求范围所定义的问题的控制,而不是开发方法。

答案 4 :(得分:-3)

使用像Python或Ruby这样的动态语言来开发:你不必为解决其他语言中的许多问题而斗争,这些问题首先是“设计模式”的原因。

动态语言与自动化测试相结合可以非常快速地提供结果,因此您可以知道要采取的方向。如果你意识到出于性能原因你应该使用静态语言,或者你可以翻译你已经构建的动态软件。