Event Aggregator模式如何为其订阅者管理其不同的发布者?

时间:2012-10-20 19:42:24

标签: events design-patterns event-handling eventaggregator

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

假设有3个订阅者SubscriberASubscriberBSubscriberC。他们都想订阅一个名为OnPowerUpEvent的活动。 OnPowerUpEvent可以PowerItemAPowerItemB触发PowerItemA。还可以有{em>多个实例 PowerItemBOnPowerUpEvent

基于这种情况,我不明白Event Aggregator模式如何能够允许订阅者订阅特定发布者发布的事件。在我看来,订阅者一般只能订阅活动SubscriberA,无论发布者是谁,都可以回复此事件。

例如,OnPowerUpEvent可能希望订阅由任何 PowerItemA个实例发布的事件SubscriberBOnPowerUpEvent可能希望订阅由PowerItemB特定实例发布的事件SubscriberC。并且OnPowerUpEvent可能希望订阅一般事件{{1}},无论发布者是谁

在这3种不同的情况下,Event Aggregator模式如何管理它?

1 个答案:

答案 0 :(得分:1)

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

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

fundAddedEvent.Subscribe(FundAddedEventHandler, 
                         ThreadOption.UIThread, false,
                         fundOrder => fundOrder.CustomerId == _customerId);