在事件聚合器模式中,发布者通过聚合器将事件发布给聚合器和订户订阅特定事件。
假设有3个订户SubscriberA
,SubscriberB
和SubscriberC
。他们都想订阅一个称为OnPowerUpEvent
的事件。OnPowerUpEvent
可以通过PowerItemA
或PowerItemB
触发。PowerItemA
和PowerItemB
也可以有多个实例。
基于这种情况,我不了解事件聚合模式如何允许订阅者订阅特定发布者发布的事件。在我看来,订户通常只能订阅事件OnPowerUpEvent
,无论出版商是谁。
例如,SubscriberA
可能需要订阅由任何任何 PowerItemA
实例发布的事件OnPowerUpEvent
。SubscriberB
可能要订阅由PowerItemB
的A 特定实例发布的事件OnPowerUpEvent
。SubscriberC
可能想订阅事件OnPowerUpEvent
,不管是谁是谁。
在这三种不同的情况下,事件聚合图模式如何管理?
流行事件聚合器实现不仅提供简单的发布/订阅功能,而且提供更多comples订阅过滤基础结构,例如Prism EventAggregator允许提供谓词与处理程序:(请参阅MSDN)
FundAddedEvent fundAddedEvent = eventAggregator.GetEvent<FundAddedEvent>();
fundAddedEvent.Subscribe(FundAddedEventHandler,
ThreadOption.UIThread, false,
fundOrder => fundOrder.CustomerId == _customerId);