3

经典的“设计模式:可重用的面向对象软件的元素”实际上向我们大多数人介绍了设计模式的概念。

然而,这些天来,我发现 Martin Fowler 的“企业应用程序架构模式”(POEA)之类的书在我的日常工作中更加有用。

在与其他开发人员的讨论中,许多人(公平)指出,像 .NET 这样的框架正在慢慢开始提供 GOF 书中的许多模式,那么为什么要重新发明轮子呢?

似乎许多开发人员认为 GOF 书是唯一值得参考的设计模式。所以他们的逻辑是,因为框架(.NET 等)为我们提供了许多 GOF 模式,所以模式已经过时并且不再那么重要。

令人惊讶的是(至少对我来说)当我提到 POEA 中描述的模式时,我经常会遇到茫然的目光。

POEA 证明模式不仅仅是交互器、单例、命令等。我还要说 GOF 中的模式实际上只是模式的一个独特“类别”,适用于不同(非重叠)设计级别,而不是那些在 POEA。

那么,您的开发中还应用了哪些其他“类别”的模式?这些模式适用于什么级别的设计?它们通常在开发过程的哪个阶段使用?这些模式是否有书籍或参考资料?

4

3 回答 3

7

Ward wiki 上的CategoryPatterns包含一个分类的模式列表。

前三个是GoF模式

  • 创造的
  • 结构
  • 行为的

然后有问题具体问题

  • 安全
  • 并发
  • 即时的

Fowler 的模式是企业应用程序模式。还有企业集成模式。UI 模式也存在……等等……

于 2008-09-24T06:24:29.490 回答
3

我只是添加一个答案,因为我对这个问题的回答有所不同。根据 POSA(面向模式的软件架构系列书籍),模式分为三个层次:

  • 架构模式(例如层、MVC、P2P
  • 设计模式(例如 GoF 模式
  • 成语(例如语言特定的模式,如 C++ 中的 Pimpl、RAII
于 2009-05-25T15:59:13.733 回答
0

GoF 模式也严格适用于代码。Fowler 的模式不仅适用于代码,还适用于数据和系统组件的排列和互连方式。

此外,如果某些模式已经在编程语言中烘焙,则它们不是必需的。在某些语言中,它们只是成语。有人实际上提出了这样的论点:设计模式是编程语言缺陷的标志。

于 2008-09-24T07:13:24.567 回答