Categories of design patterns
经典的"设计模式:可重用面向对象软件的元素"实际上向我们大多数人介绍了设计模式的思想。
然而,最近我发现马丁·福勒的《企业应用程序体系结构模式》(PoEA)一书在我的日常工作中更有用。
在与其他开发人员的讨论中,许多人认为像.NET这样的框架正在缓慢地开始提供gof书中的许多模式,那么为什么要重新发明轮子呢?
似乎许多开发人员认为GoF手册是设计模式上唯一值得参考的。所以他们的逻辑是,因为框架(.net等)为我们提供了许多gof模式,所以模式已经见怪不怪了,不再那么重要了。
令人惊讶的是(至少对我来说)当我提到《诗篇》中描述的图案时,我常常会被一双茫然的眼睛盯着。
Poea证明了模式不仅仅是交互、单件、命令等。我也会说,GoF中的模式实际上只是模式的一个独特的"类别",适用于不同(不重叠)的设计级别,而不是Poea中的模式。
那么,在您的开发中还应用了其他哪些"类别"的模式呢?这些模式适用于什么级别的设计?它们通常在开发过程中的什么时候使用?这些图案有没有书或参考书?
Ward wiki上的CategoryPatterns包含一个分类的模式列表。
前三个是GOF模式
- 创造的
- 结构的
- 行为学
还有一些特定的问题
- 安全性
- 并发性
- 实时的
Fowler的模式是企业应用程序模式。还有企业集成模式。用户界面模式也存在。等等…
我只是在增加一个答案,因为这个问题的答案有些不同。根据POSA(面向模式的软件体系结构系列书籍),有三个层次的模式:
- 架构模式(例如,层、MVC、P2P)
- 设计模式(如GOF模式)
- 成语(如C++语言中的特定模式,Pimpl在C++中)
GOF模式也严格适用于代码。福勒的模式不仅用于代码,还用于数据和系统组件的排列和互连方式。
此外,如果某些模式已经在编程语言中烘焙,则它们是不必要的。在某些语言中,它们只是习语。实际上,有人认为设计模式是编程语言缺陷的标志。