- Notifications
You must be signed in to change notification settings - Fork1
Home
The Event Aggregator consist of three distinct parts:
- Thepublishers, which publish different kind ofMessages.
- TheSubscribers, which are interested for different kind ofMessages.
- And theEvent Aggregator, which aggregates all theMessages that are emitted by the Publishers andtransmit them in every interested Subscriber.
The Publishers publish different type of Messages via the Event Aggregator. The Event Aggregator from its sidepropagate these Messages to all interested Subscribers.
Each publishedMessage has a distinctIEventType and a specificContent.
Every Subscriber is registered to the Event Aggregator in order to get notifications for specific IEventTypeof Messages.
Also, every subscriber assign, for every IEvenType which is interested, a specific Action.So, when it gets a notification relevant for a specific IEventType, then the corresponding Action is executed.
Every Subscriber can watch more than one IEventType of Messages and also every Publisher can publish more than onedifferent IEventType of Messages.
publicenumEventimplementsIEventType {ITEM_CREATED,ITEM_SAVED,ITEM_SELECTED,}
publicclassItem {privatefinalintitemNumber;publicItem(intitemNumber) {this.itemNumber =itemNumber; }publicintgetItemNumber() {returnitemNumber; }}
publicclassApp {publicstaticvoidmain(String[]args) {finalEventAggregatoreventAggregator =newEventAggregator();finalISubscriberitemView =newSubscriber(eventAggregator);itemView.subscribe(Event.ITEM_CREATED,message ->System.out.println("Item created " + ((Item)message.getContent()).getItemNumber()) );itemView.subscribe(Event.ITEM_SAVED,message ->System.out.println("Item saved " + ((Item)message.getContent()).getItemNumber()) );itemView.subscribe(Event.ITEM_SELECTED,message ->System.out.println("Item selected " + ((Item)message.getContent()).getItemNumber()) );finalIPublisherpublisher =newPublisher(eventAggregator);finalItemitem1 =newItem(1);finalItemitem2 =newItem(2);finalItemitem3 =newItem(3);System.out.println("\n******************** ITEM_CREATED ********************");publisher.publish(Event.ITEM_CREATED,item1);publisher.publish(Event.ITEM_CREATED,item2);publisher.publish(Event.ITEM_CREATED,item3);System.out.println("******************************************************");System.out.println("\n********************* ITEM_SAVED *********************");publisher.publish(Event.ITEM_SAVED,item1);publisher.publish(Event.ITEM_SAVED,item3);System.out.println("******************************************************");System.out.println("\n******************* ITEM_SELECTED ********************");publisher.publish(Event.ITEM_SELECTED,item2);publisher.publish(Event.ITEM_SELECTED,item3);System.out.println("******************************************************"); }}