观察者设计模式的故事是什么?

Jot*_*ras 5 history design-patterns observer-pattern

我一直在调查关于作业的观察者模式.到目前为止,我得出的结论是,它首先出现在一群名为"四人帮"的人的书中.

但我也读到它的第一个实现是在基于SmallTalk MVC的框架中.

观察者模式是否有起源?谁先设计了它?哪个GoF成员做到了?自创建以来它是否遭受了任何变化?

此外,该模式的一些实现包括他们称为"ConcreteSubject"的东西,它是Subject类的概括.这是模式的变体,还是原始模型的演变?

Sco*_*eld 8

Gang of Four对Design Patterns的主要贡献是为一些常用模式命名,以协助设计意图的交流.写起来容易得多

// this is an observer
Run Code Online (Sandbox Code Playgroud)

而不是一个没有人会阅读的大块评论.如果人们分享行话,开发人员可以更有效地沟通.

观察者模式早在OO编程之前就已存在.大多数情况下,它使用术语"回调"来引用,通常用各种语言的函数指针实现,或者甚至可能用于指示应该调用哪个函数/过程/子例程的标志.这代表了模块之间最早的抽象通信形式之一.我甚至看到过汇编语言采用的类似方法 - 存储一个回调地址并用它间接通知"发生了什么事".

要记住的一件大事......"四人帮"在"设计模式"一书中展示的实现并非"绝对" - 他们在那里展示了一种方法.您可以使用函数指针轻松实现Observer模式,就像使用抽象类,接口或C#委托一样.

(我在约翰霍普金斯大学教授设计模式课程,顺便说一句;))