Joh*_*ada 128 language-agnostic design-patterns listener observer-pattern
在我看来,GOF中描述的Observer设计模式与Listeners在各种工具包中找到的实际上是相同的.概念之间是否存在差异,或者听众和观察者是否真的相同.
(我不是在寻找任何特定的计算机语言实现,我只是想从设计的角度来理解差异(如果有的话).是的,我知道有关SOF的类似问题有几个答案,但它们已根深蒂固关于特定语言的具体问题 - 我正在寻找设计答案,而不是语言答案.)
Der*_*eer 56
术语"监听器"是否指代观察者模式将取决于上下文.例如,Java Swing的"事件监听器"是Observer模式实现的一部分,而.Net"跟踪监听器"则不是.
框架作者为参与给定模式实现的组件分配不同的名称并不罕见,但官方模式名称通常在讨论模式本身时使用.
关于设计,给定模式的实现通常会受到所使用的语言和平台的影响.因此,给定框架内的Observer模式的特定实现(可能碰巧使用术语"侦听器"来描述ConcreteObserver的角色)可能与Design Patterns一书中描述的略有不同.
Ric*_*zaк 25
Gamma等人对"设计模式中的观察者"的描述具有双重性质.人.(GOF).
在他们对Observer的描述中,其中一个ConcreteObservers可能会发出对其Subject的更改.Subject,其中包含所有ConcreteObservers的列表,然后通知其列表.然后,包括原动机在内的所有ConcreteObservers都会做出适当的反应.
Listeners的常见实现似乎都对来自外部的事件做出反应.
所以,我会说Listener是一个不太概括的观察者案例.