我研究了 GoF 设计模式一书,并列出了 Martin Fowler 的 PoEAA 书。(我也有 Judith Bishop 的书,我个人不喜欢。)但是还有更多的模式,比如委托模式。它的起源是什么?这些书中没有提到其他模式吗?是否有其他关于此主题的“必读”书籍或在线资源?
4 回答
它的起源是什么?
设计模式的起源
不久前我做了一些研究,并对设计模式的起源做了一些笔记。以下是我当时收集的个人笔记的复制/粘贴。
最初
的影响 软件工程中设计模式的影响来自一个叫Christopher Alexander的人,他是一名建筑建筑师(Houses not Software)。他以他的设计理论而闻名,并于 1977 年出版了一本书,A Pattern Language。在这本书中,Christopher Alexander 讨论了模式的概念,因为它们可以被重用并应用于复杂和重复的工程任务。
转向软件开发
Christopher Alexander 的工作影响了Kent Beck和Ward Cunningham,他们将模式分类的概念应用于软件开发,并在 1987 年的 OOPSLA 会议上介绍了他们的工作。
四人组
设计模式和软件开发最著名的来源可能是这本书:Design Patterns: Elements of Reusable Object-Oriented Software。这本书的作者以四人组而闻名,他们是埃里希·伽玛、理查德·赫尔姆、拉尔夫·约翰逊和约翰·弗里赛德斯。
这本书是第一本即将出版的设计模式书籍,并在 1994 年的 OOPSLA 会议上首次公开。
这些书中没有提到其他模式吗?
我还没有读过你提到的所有书籍,但是当我参加关于设计模式的 PluralSight 课程时,它们已经涵盖了很多内容,请参见下面的列表。
- 适配器模式
- 桥接模式
- 建造者模式
- 责任链
- 命令模式
- 复合图案
- 装饰器设计模式
- 事件聚合器
- 立面图案
- 工厂模式
- 蝇量级
- 解释器模式
- 迭代器模式
- 延迟加载模式
- 中介者模式
- 纪念
- 模型视图展示器 (MVP) 模式
- 模型视图视图模型 (MVVM) 模式
- 空对象模式
- 观察者模式
- 原型模式
- 代理模式
- 存储库
- 辛格尔顿
- 服务定位器模式
- 状态模式
- 策略模式
- 模板法
- 工作单元
- 访客模式
这些书中没有提到其他模式吗?
确实。GoF 模式是这一切的祖父,而且相当普遍,但您也可以拥有特定领域的模式。正如您提到的,就像 Fowler 的 PoEAA。或者嵌入式系统的设计模式。但也比这更具体,比如福勒关于分析模式的书,其中有金融和医疗保健相关的模式。或航空电子系统的模式,如Hillside Patterns Catalog中的链接。
它的起源是什么?
如果您的意思是委托模式的起源是什么,我不知道,但有人在这里提出了类似的问题。
是否有其他关于此主题的“必读”书籍或在线资源?
我相信,名字很有趣的“ PLoP ”会议(程序设计的模式语言)是第一个展示一些模式的地方。
还有一本 PLoP 期刊:Transactions on Pattern Languages of Programming。
我发现Design Patterns Explained在解释 Gang of Four 模式背后的一些原始想法方面非常有用。这是一个解释而不是参考。
除了其他地方提到的 PluralSight 目录之外,NetObjectives 还拥有一些关于模式(和一般原则)的大量资源,尤其是他们的网络研讨会系列。
Design Patterns: Elements of Reusable Object-Oriented Software和The Design of Everyday Things是非常好的书籍。我特别推荐前者,因为它读起来很直观。
我认为“必读”是非常主观的,但我真的从Head First Design Patterns中学到了很多关于设计模式的话题。也就是说,“头脑优先”的书有一种典型的写作风格(我想我听说有人把它描述为愚蠢的......)可能并不适合所有人,对我来说它很有效。我特别发现它比前面提到的(尽管确实非常好)“四人帮”书更轻巧,更容易阅读。