Delphi中是否存在Java听众原则的等价物?

时间:2011-08-29 09:05:37

标签: java delphi events

我只是好奇这个。我知道两种在Delphi中定义事件的方法,使用回调原理和windows消息原理。

但是,消息原则不是面向对象的,并且回调仅适用于一个实例。

我想为一个事件提供一个很好的解决方案,其中两个不同的对象可以在事件触发后执行操作。

在Java中,我可以简单地添加另一个监听器。

有没有人知道Delphi中对于这个好听众原则的任何等效方法?

3 个答案:

答案 0 :(得分:4)

这些也被称为多播事件,Allen Bauer撰写了一篇名为Multicast events using generics的好文章,对该主题做了很好的报道。

简而言之,多播事件并没有像Java C#那样融入语言/框架,但可以通过一些额外的工作进行模拟。泛型的引入使这更简单。

答案 1 :(得分:1)

SO上已经有a similar discussion,还有一些指向现有多播实现的附加链接。

答案 2 :(得分:0)

实际上这是一种名为观察者或听者(http://c2.com/cgi/wiki?ObserverPattern)的设计模式。我想你可以编写你的对象的实现,这样你就可以注册一个观察者列表,可以通知你代码中的任何变化。