java怎么创建一个事件_java – 创建一个简单的事件驱动架构

如果你想拥有一个带有重载方法的单个EventHandler类,并且你的事件类型没有任何子类,那么这个使用反射的简单代码应该可以工作:

public class EventHandler {

public void handle (final PlayerMove move) {

//... handle

}

public void handle (final Contact contact) {

//... handle

}

public void handle (final Attack attack) {

//... handle

}

}

public void sendEvent (final EventHandler handler, final Object event) {

final Method method = EventHandler.class.getDeclaredMethod ("handle", new Class[] {event.getClass ()});

method.invoke (handler, event);

}

但是,如果您希望为不同的事件分配EventHandler,则以下情况会更好.

public interface EventHandler {

void handle (T event);

}

public class PlayerMoveEventHandler implements EventHandler {

@Override

public void handle (final PlayerMove event) {

//... handle

}

}

public class EventRouter {

private final Map eventHandlerMap = new HashMap ();

public void sendEvent (final Event event) {

eventHandlerMap.get (event.getClass ()).handle (event);

}

public void registerHandler (final Class eventClass, final EventHandler handler) {

eventHandlerMap.put (eventClass, handler);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值