Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
iokats edited this pageApr 6, 2019 ·1 revision

Event Aggregator a Java Implementation

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.

How It Works

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.

Event Aggregator UML Diagram

UML Diagram

Code Example

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("******************************************************");    }}

[8]ページ先頭

©2009-2025 Movatter.jp