你不能没有哪种GoF模式?

时间:2009-01-31 00:06:57

标签: design-patterns

如果将来您只能使用Gang of Four book中定义的单一规范模式,您会选择哪一个以及出于什么原因?

12 个答案:

答案 0 :(得分:21)

不是设计模式,但对我而言,这个原则绝对是我整本书编程风格中最具影响力的:

在类继承上支持对象组合。

结合其他原则“程序到界面,而不是实现”,大多数设计模式自然而然地遵循。

在我看来,选择一种最重要的模式是不可能的。他们都有自己的目的,相得益彰。就像询问锤子或螺丝刀是否更有用一样。这取决于问题,有时候你有钉子,有时还有钉子。

答案 1 :(得分:3)

抽象工厂模式或模板方法模式......但主要是抽象工厂模式。它们在很多情况下都非常有用。

我特别喜欢抽象工厂允许您通过以不同方式遵循相同规则来为您知道您的程序将来可能发生变化的情况做准备的方式。

大部分类似于抽象类允许您在代码“内部”定义规范,限制代码遵循该规范,而工厂允许您在这些规范中“选择”。简直太美了。

答案 2 :(得分:3)

观察者模式

答案 3 :(得分:2)

我喜欢状态模式。对于建模,好吧,状态都有好处。对于我正在编写的游戏项目,我使用状态层次结构来跟踪游戏状态。它很简单但非常灵活。

答案 4 :(得分:2)

我会说Decorator pattern。主要是因为它已经在框架中大量使用。

例如,如果你曾编写过这样的代码:

FileStream file = new FileStream("file.txt");
GZipStream compression = new GZipStream(file);
TextReader reader = new TextReader(compression);
reader.ReadAll();

然后你使用了Decorator模式。

答案 5 :(得分:1)

如果我选择一个,我会选择封面上的M.C.Escher图片,放在墙上。 ;)

答案 6 :(得分:1)

这是一个很难回答的问题,因为我发现当我学习模式时,我正在以非常类似的方式为许多设计模式实现许多系统(特别是更基本的模式,如创建模式,或状态,战略和模板)。

现在我知道了GoF,我无法在脑海中分辨出我不会发现自然的模式,而对我而言,这就是良好的模式。一个好的模式很自然,你可以使用模式编写代码,因为它是一个很好的解决方案。

模式只是让我们谈谈我们用普通方言编写解决方案的策略。我知道我没有回答你的问题所以我applogize。

答案 7 :(得分:1)

我喜欢访客模式。不止一次,我遇到了设计问题并无法解决问题,直到我终于发现访客模式才是答案。

您可以向类添加任何功能,而无需更改它!只需在其中放入一个accept()函数。

答案 8 :(得分:1)

听众或观察者模式。

无法想象我的生活中会检查是否发生了事情。

其他:

  1. 适配器(如果您不想触摸可行的代码但是您没有时间了解如何,或者您只是不知道的话,这非常有用)
  2. 国家
  3. 策略

答案 9 :(得分:0)

我不得不说 Singleton模式。你需要多少次一次又一次地使用一个类的实例!它可能被认为是反模式,但它是我经常使用的模式。

同样,抽象工厂模式也是我一直使用的工具,而且当我们需要实现一组新的需求时,前期开发为我节省了数小时的重新分解。

答案 10 :(得分:0)

行为模式

    当我的业务逻辑被分配时,
  • 状态;
  • 当上下文改变算法时,
  • 策略;
  • Iterator 当我读取一组对象时;

答案 11 :(得分:0)

我不能没有的是迭代者。我每天都用它。我很难想象没有它的生活:-)我最常用的是Decorator / Wrapper。