设计模式类别

时间:2020-03-06 14:38:43  来源:igfitidea点击:

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

但是,如今,我发现诸如Martin Fowler的《企业应用程序体系结构模式》(POEA)之类的书在我的日常工作中更加有用。

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

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

令人惊讶的是(至少对我而言),当我提到POEA中描述的模式时,我经常会遇到空白的凝视。

POEA证明了模式不只是Interators,Singletons,Command等。我还要说的是,GOF中的模式实际上只是模式的一个独特的"类别",适用于不同于(不重叠)设计水平的在POEA中。

那么,开发中还应用了哪些其他"类别"模式?这些模式适用于什么级别的设计?通常在开发过程中的什么时候使用它们?有没有关于这些模式的书或者参考书?

解决方案

Ward Wiki上的CategoryPatterns包含模式的分类列表。

前三个是GoF模式

  • 创造力的
  • 结构性
  • 行为的

然后有问题特定的问题

  • 安全
  • 并发
  • 即时的

Fowler的模式是企业应用程序模式。也有企业集成模式。 UI模式也存在..依此类推...

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

另外,如果某些模式已经用编程语言烘焙,则它们是不必要的。在某些语言中,它们只是成语。实际上,有人提出了这样的观点,即设计模式是编程语言不足的标志。

我只是添加了一个答案,因为我对这个问题的回答有些不同。根据POSA(面向模式的软件体系结构丛书),模式分为三个级别:

  • 建筑模式(例如Layers,MVC,P2P)
  • 设计模式(例如GoF模式)
  • 习语(例如,特定于语言的模式,例如C ++中的Pimpl,RAII)