#113 Event Driven Architecture
- refactored and moved around some classes
This commit is contained in:
parent
eb396217d0
commit
3ef0921f20
@ -1,10 +1,18 @@
|
||||
package com.iluwatar.eda.advanced;
|
||||
|
||||
import com.iluwatar.eda.advanced.events.Event;
|
||||
import com.iluwatar.eda.advanced.events.UserCreatedEvent;
|
||||
import com.iluwatar.eda.advanced.events.UserUpdatedEvent;
|
||||
import com.iluwatar.eda.advanced.handler.UserCreatedEventHandler;
|
||||
import com.iluwatar.eda.advanced.handler.UserUpdatedEventHandler;
|
||||
|
||||
public class App {
|
||||
|
||||
public static void main(String[] args) {
|
||||
EventDispatcher dispatcher = new EventDispatcher();
|
||||
dispatcher.registerChannel(Event.class, new Handler());
|
||||
dispatcher.dispatch(new Event());
|
||||
dispatcher.registerChannel(UserCreatedEvent.class, new UserCreatedEventHandler());
|
||||
dispatcher.registerChannel(UserUpdatedEvent.class, new UserUpdatedEventHandler());
|
||||
dispatcher.dispatch(new UserCreatedEvent());
|
||||
dispatcher.dispatch(new UserUpdatedEvent());
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +0,0 @@
|
||||
package com.iluwatar.eda.advanced;
|
||||
|
||||
|
||||
public interface Channel<E extends Message> {
|
||||
public void dispatch(E message);
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
package com.iluwatar.eda.advanced;
|
||||
|
||||
public interface DynamicRouter<E extends Message> {
|
||||
public void registerChannel(Class<? extends E> contentType, Channel<? extends E> channel);
|
||||
public void dispatch(E content);
|
||||
}
|
@ -1,18 +1,23 @@
|
||||
package com.iluwatar.eda.advanced;
|
||||
|
||||
import com.iluwatar.eda.advanced.events.Event;
|
||||
import com.iluwatar.eda.advanced.framework.Channel;
|
||||
import com.iluwatar.eda.advanced.framework.DynamicRouter;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class EventDispatcher implements DynamicRouter<Event> {
|
||||
private Map<Class<? extends Event>, Handler> handlers;
|
||||
|
||||
private Map<Class<? extends Event>, Channel> handlers;
|
||||
|
||||
public EventDispatcher() {
|
||||
handlers = new HashMap<Class<? extends Event>, Handler>();
|
||||
handlers = new HashMap<Class<? extends Event>, Channel>();
|
||||
}
|
||||
|
||||
public void registerChannel(Class<? extends Event> contentType,
|
||||
Channel<? extends Event> channel) {
|
||||
handlers.put(contentType, (Handler)channel);
|
||||
Channel channel) {
|
||||
handlers.put(contentType, channel);
|
||||
}
|
||||
|
||||
public void dispatch(Event content) {
|
||||
|
@ -1,7 +0,0 @@
|
||||
package com.iluwatar.eda.advanced;
|
||||
|
||||
public class Handler implements Channel<Event> {
|
||||
public void dispatch(Event message) {
|
||||
System.out.println(message.getClass());
|
||||
}
|
||||
}
|
@ -1,4 +1,6 @@
|
||||
package com.iluwatar.eda.advanced;
|
||||
package com.iluwatar.eda.advanced.events;
|
||||
|
||||
import com.iluwatar.eda.advanced.framework.Message;
|
||||
|
||||
public class Event implements Message {
|
||||
public Class<? extends Message> getType() {
|
@ -0,0 +1,9 @@
|
||||
package com.iluwatar.eda.advanced.events;
|
||||
|
||||
import com.iluwatar.eda.advanced.events.Event;
|
||||
|
||||
/**
|
||||
* @author cfarrugia
|
||||
*/
|
||||
public class UserCreatedEvent extends Event {
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
package com.iluwatar.eda.advanced.events;
|
||||
|
||||
import com.iluwatar.eda.advanced.events.Event;
|
||||
|
||||
public class UserUpdatedEvent extends Event {
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package com.iluwatar.eda.advanced.framework;
|
||||
|
||||
|
||||
import com.iluwatar.eda.advanced.events.Event;
|
||||
|
||||
public interface Channel<E extends Event> {
|
||||
void dispatch(E message);
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
package com.iluwatar.eda.advanced.framework;
|
||||
|
||||
public interface DynamicRouter<E extends Message> {
|
||||
void registerChannel(Class<? extends E> contentType, Channel channel);
|
||||
void dispatch(E content);
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.iluwatar.eda.advanced;
|
||||
package com.iluwatar.eda.advanced.framework;
|
||||
|
||||
|
||||
public interface Message {
|
@ -0,0 +1,15 @@
|
||||
package com.iluwatar.eda.advanced.handler;
|
||||
|
||||
import com.iluwatar.eda.advanced.events.Event;
|
||||
import com.iluwatar.eda.advanced.events.UserCreatedEvent;
|
||||
import com.iluwatar.eda.advanced.framework.Channel;
|
||||
|
||||
/**
|
||||
* @author cfarrugia
|
||||
*/
|
||||
public class UserCreatedEventHandler implements Channel<UserCreatedEvent> {
|
||||
|
||||
public void dispatch(UserCreatedEvent message) {
|
||||
System.out.println("User Created!");
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.iluwatar.eda.advanced.handler;
|
||||
|
||||
import com.iluwatar.eda.advanced.events.Event;
|
||||
import com.iluwatar.eda.advanced.events.UserUpdatedEvent;
|
||||
import com.iluwatar.eda.advanced.framework.Channel;
|
||||
|
||||
public class UserUpdatedEventHandler implements Channel<UserUpdatedEvent> {
|
||||
|
||||
public void dispatch(UserUpdatedEvent message) {
|
||||
System.out.println("User Updated!");
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user