首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >观察者设计模式与“监听者”

观察者设计模式与“监听者”
EN

Stack Overflow用户
提问于 2010-07-29 08:30:05
回答 3查看 57.5K关注 0票数 155

在我看来,GOF中描述的观察者设计模式实际上与各种工具包中的侦听器是一样的。概念之间有区别吗,还是监听者和观察者真的是一回事。

(我并不是在寻找任何特定的计算机语言实现,我只是想从设计的角度来理解它们之间的区别(如果有的话)。是的,我知道SOF上有几个类似问题的答案,但它们根源于特定语言的特定问题--我正在寻找设计答案,而不是语言答案。)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-29 10:35:21

术语“监听器”是否指观察者模式将取决于上下文。例如,Java Swing的“事件侦听器”是观察者模式实现的一部分,而.Net的“跟踪侦听器”不是。

对于框架作者来说,为参与给定模式实现的组件分配不同的名称并不少见,但在讨论模式本身时,通常会使用官方的模式名称。

关于设计,给定模式的实现通常会受到所使用的语言和平台的影响。因此,观察者模式在给定框架中的特定实现(可能碰巧使用术语“侦听器”来描述ConcreteObserver的角色)可能与“设计模式”一书中描述的略有不同。

票数 65
EN

Stack Overflow用户

发布于 2013-04-11 01:37:47

Gamma et在设计模式中对观察者的描述是双向的。阿尔。(GoF)。

在他们对观察者的描述中,其中一个ConcreteObservers可能表示其主题发生了变化。主题持有所有ConcreteObservers的列表,然后通知它的列表。然后,包括原动机在内的所有ConcreteObservers都会做出适当的反应。

侦听器的常见实现似乎都对来自外部的事件做出反应。

因此,我想说监听器是观察者的一种不太一般化的情况。

票数 31
EN

Stack Overflow用户

发布于 2010-07-29 08:42:43

侦听器很可能是观察者模式的实现。侦听器本质上是在等待给定对象上发生的事件,这是观察者所做的事情。

我知道你不想要一个特定于语言的答案,但很难抽象地谈论这些东西。因此,如果我要在.NET中研究这一点,我倾向于在.NET反射器中打开一个包含侦听器的程序集,这将允许我反汇编程序集并根据设计模式检查其逻辑。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3358622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档