事件 – 观察者模式和事件驱动方法之间的差异

我总是发现Observer Pattern几乎类似于通常的事件驱动的方法。其实,我几乎相信,他们实际上只是不同的名称指的是同一件事。他们都使用类似的概念来作为监听器,甚至在实现中,他们几乎是相同的事情,这是有一个回调方法/函数来执行一个动作。这至少在Java。

在其他语言说Actionscript / Flex,事件更加用户友好,可能看起来像它不仅仅是观察者模式定义。但是,概念听起来是一样的。

但这是真的吗?观察者模式与通常的事件驱动编程风格是一样的吗?

观察者模式是一个非常特殊的实例。事件驱动可以意味着什么。在大多数观察者模式实现中,观察者是观察观察者的对象。当观察者改变时,调用观察者的方法。严格来说,这不是一个“事件”。这意味着:对观察者的各种不同的动作,通常导致在观察者中调用不同的方法。语法“what”被改变的是在方法中。
在事件驱动系统中,你基本上有一个消费对象/方法和消息什么被改变或什么happend在事件。这可以是任何东西,而不是限制观察的东西的想法!这意味着:在事件驱动系统中,通过添加新的事件类型来获得新的语义。在观察者模式中,通常通过向Observer类中添加一个方法来添加语义。然而:没有人阻止你实现一个观察者作为ChangeEvents的一个特殊的模式。
http://stackoverflow.com/questions/6439512/difference-between-observer-pattern-and-event-driven-approach

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:事件 – 观察者模式和事件驱动方法之间的差异