设计模式类别
时间: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)