0

在事件聚合器模式中,发布者将事件发布到聚合器,订阅者通过聚合器订阅特定事件。

假设有 3 个订阅者SubscriberASubscriberBSubscriberC。他们都想订阅一个名为OnPowerUpEvent. OnPowerUpEvent可以由或PowerItemA触发PowerItemB。和也可以有多个实例PowerItemAPowerItemB

基于这种情况,我不明白事件聚合器模式如何能够允许订阅者订阅特定发布者发布的事件。在我看来,订阅者通常只能订阅事件OnPowerUpEvent,并且无论发布者是谁都可以响应事件。

例如,SubscriberA可能想要订阅任何实例OnPowerUpEvent发布的事件。可能想要订阅由 的特定实例发布的事件。并且可能希望订阅该事件,而不管发布者是谁。 PowerItemASubscriberBOnPowerUpEventPowerItemBSubscriberCOnPowerUpEvent

在这 3 种不同的情况下,事件聚合器模式如何管理呢?

4

1 回答 1

1

流行的事件聚合器实现不仅提供简单的发布/订阅功能,还提供更复杂的订阅过滤基础设施,例如 Prism EventAggregator 允许提供谓词和处理程序:(请参阅 MSDN

FundAddedEvent fundAddedEvent = eventAggregator.GetEvent<FundAddedEvent>();

fundAddedEvent.Subscribe(FundAddedEventHandler, 
                         ThreadOption.UIThread, false,
                         fundOrder => fundOrder.CustomerId == _customerId);
于 2012-10-20T19:47:29.833 回答