我只是好奇这个。我知道两种在Delphi中定义事件的方法,使用回调原理和windows消息原理。
但是,消息原则不是面向对象的,并且回调仅适用于一个实例。
我想为一个事件提供一个很好的解决方案,其中两个不同的对象可以在事件触发后执行操作。
在Java中,我可以简单地添加另一个监听器。
有没有人知道Delphi中对于这个好听众原则的任何等效方法?
答案 0 :(得分:4)
这些也被称为多播事件,Allen Bauer撰写了一篇名为Multicast events using generics的好文章,对该主题做了很好的报道。
简而言之,多播事件并没有像Java C#那样融入语言/框架,但可以通过一些额外的工作进行模拟。泛型的引入使这更简单。
答案 1 :(得分:1)
SO上已经有a similar discussion,还有一些指向现有多播实现的附加链接。
答案 2 :(得分:0)
实际上这是一种名为观察者或听者(http://c2.com/cgi/wiki?ObserverPattern)的设计模式。我想你可以编写你的对象的实现,这样你就可以注册一个观察者列表,可以通知你代码中的任何变化。