何时使用哪种设计模式?

时间:2011-02-18 09:47:08

标签: c# design-patterns

我非常喜欢设计模式,但是我觉得很难看到什么时候可以申请。我已经阅读了许多解释设计模式的网站。我对它们中的大部分都了解,但我发现很难在自己的情况下识别出一种模式。

所以,这就是我提出这个问题的原因。在使用哪种设计模式时是否有任何指导/警钟。

例如,如果您正在执行switch语句以确定需要创建哪个对象,则可能需要使用工厂设计模式。因此,在这种情况下,switch语句是使用Factory模式的“警钟”。

那么,您是否知道更多'警钟'来确定设计模式?

4 个答案:

答案 0 :(得分:96)

通常这个过程是相反的。不要去寻找使用设计模式的情况,寻找可以优化的代码。当您拥有您认为没有正确构造的代码时。尝试找到一个可以解决问题的设计模式。

设计模式旨在帮助您解决结构问题,不要仅仅为了能够使用设计模式来设计您的应用程序。

答案 1 :(得分:37)

首先,请看一下这个页面: http://codebetter.com/jeremymiller/2006/04/11/six-design-patterns-to-start-with/

虽然Jeremy在这里处理了一些模式,但您必须阅读这些文章,然后按照以下方式进行操作: http://codebetter.com/jeremymiller/2005/09/01/learning-about-design-patterns/

也可以使用本文中的参考文献(特别是Eric Gamma的采访),你应该设置好。

答案 2 :(得分:5)

了解它们,慢慢地,您将能够重新协调并找出何时使用它们。从简单的单身模式开始:)

如果你想创建一个对象的实例而只想创建一个。您使用单例模式。假设您正在使用选项对象制作程序。你不想要其中的几个,这将是愚蠢的。 Singleton确保永远不会有多个。单身模式很简单,使用很多,而且非常有效。

答案 3 :(得分:4)

我完全赞同@Peter Rasmussen。

设计模式为常见的设计问题提供了通用解决方案。

我希望您遵循以下方法。

  1. 了解每种模式的意图
  2. 了解每个模式的核对清单或用例
  3. 考虑解决您的问题,并检查您的解决方案是否属于特定模式的核对表
  4. 如果没有,只需忽略设计模式并编写自己的解决方案。
  5. 有用的链接:

    sourcemaking:以多种语言(包括C ++和Java)精美地解释意图结构清单

    wikipedia:解释包括C#和Java在内的多种语言的结构,UML图和工作示例。

    每个sourcemakding设计模式中的

    检查清单 经验法则 提供了alram bell你在找。