在我看来,GoF中描述的观察者设计模式与各种工具包中的监听器是相同的东西。这些概念是否有区别?或者说监听器和观察者真的是同一件事情吗。
(我不寻找任何特定的计算机语言实现,我只想从设计的角度了解它们之间的区别(如果有)。是的,我知道在SO上有几个类似问题的答案,但它们都根植于特定语言的特定问题--我正在寻找的是一个设计答案,而不是语言答案。)
在我看来,GoF中描述的观察者设计模式与各种工具包中的监听器是相同的东西。这些概念是否有区别?或者说监听器和观察者真的是同一件事情吗。
(我不寻找任何特定的计算机语言实现,我只想从设计的角度了解它们之间的区别(如果有)。是的,我知道在SO上有几个类似问题的答案,但它们都根植于特定语言的特定问题--我正在寻找的是一个设计答案,而不是语言答案。)
在Gamma等人所著的《设计模式》一书中,观察者有一个双向性质。
他们对观察者的描述中,其中一个具体观察者可能会向其主题发出信号。主题(持有所有具体观察者的列表)随后通知它的列表。包括主要驱动程序在内的所有具体观察者都会作出适当反应。
常见的监听器实现似乎都是对外部事件做出反应。
因此,我认为监听器是观察者的一种更特殊的情况。
如果您只想知道要使用什么名称,您可能希望将“listener”用于简单的内容,“observer”用于超出回调范围的任何复杂内容。
我的意思是字面上,一个人可以用许多方法“观察”,但一个人只能“听取”某物发出的外部噪音(如回调、通知等)。