![]() |
1
63
“听者”一词是否指观察者模式将取决于上下文。例如,JavaSwing的“事件监听器”是Observer模式实现的一部分,而.Net的“跟踪监听器”则不是。 框架作者为参与给定模式实现的组件分配不同的名称并不少见,但是在讨论模式本身时通常使用正式的模式名称。 在设计方面,给定模式的实现常常会受到所使用的语言和平台的影响。因此,给定框架中观察者模式的特定实现(可能碰巧使用术语“侦听器”来描述ConcreteObserver的角色)可能与设计模式书中描述的略有不同。 |
![]() |
2
29
在他们对观察者的描述中,其中一个具体的观察者可能会发出改变其主题的信号。主体持有所有具体观察者的列表,然后通知其列表。所有观察者,包括原动机,都会做出适当的反应。 侦听器的常见实现似乎都对来自外部的事件作出反应。 所以,我要说的是,听者是一个不太一般化的观察者。 |
![]() |
3
3
侦听器很可能是observer模式的一个实现。侦听器本质上是在等待给定对象上发生事件,而观察者就是这样做的。 我知道你不想得到一个特定语言的答案,但很难抽象地谈论这些东西。因此,如果我要在.NET中对此进行研究,我倾向于在.NET Reflector中打开一个包含侦听器的程序集,这将允许我分解程序集并对照设计模式检查其逻辑。 |
![]() |
csse · 我怎样才能找到观察的平均值? 7 年前 |
![]() |
pixel · C#根据订阅者的要求通知订阅者的事件 7 年前 |
![]() |
TheeSunnLightt · 事件处理和观察者模式(GoF) 7 年前 |
![]() |
Lirf · iOS Swift中的观察员、动作监听器、KVO 8 年前 |
![]() |
Anders · Jquery观察者模式 12 年前 |