我只是好奇。我知道 Delphi 中定义事件的两种方式:使用回调原理和 Windows 消息原理。
然而,消息原理不是面向对象的,而回调仅适用于一个实例。
我想要一个好的解决方案,使两个不同的对象可以在事件触发后执行操作。
在 Java 中,我可以简单地添加另一个监听器。
有没有人知道 Delphi 中类似的方法来实现这个很棒的监听器原理?
我只是好奇。我知道 Delphi 中定义事件的两种方式:使用回调原理和 Windows 消息原理。
然而,消息原理不是面向对象的,而回调仅适用于一个实例。
我想要一个好的解决方案,使两个不同的对象可以在事件触发后执行操作。
在 Java 中,我可以简单地添加另一个监听器。
有没有人知道 Delphi 中类似的方法来实现这个很棒的监听器原理?
这些也被称为多播事件,Allen Bauer撰写了一篇名为使用泛型的多播事件的好文章,对该主题进行了很好的覆盖。
简而言之,多播事件不像Java C#中内置于语言/框架中,但可以通过一些额外的工作来模拟。泛型的引入使得这个过程变得更加简单。
TApplicationEvents
组件。它使用多播事件,而不使用泛型。 - Remy Lebeau实际上,这是一种称为观察者或监听器(http://c2.com/cgi/wiki?ObserverPattern)的设计模式。我猜你可以以这样的方式编写你的对象实现,即注册一个观察者列表,可以通知任何代码更改。