首页 > 解决方案 > 如何根据事件类型处理事件

问题描述

假设我有一个包含数据和事件类型的事件类(来自远程服务)

public class Event{
  String StringData;
  Integer IntData;
  EvenType eventType;
}

其中 EventType 是枚举:

public enum EventType{
 NEW,UPDATE,DELETE
}

假设我有一个隐性事件流的管道,需要根据其类型处理事件内部的数据。例如,如果是新事件,则需要保存到数据库和日志,如果是删除事件,则将其保存到文件,因此每种事件类型都有自己的行为需要实现。

例如:

List<Event> events = ...
events.forEach(e->??? ); //how to process the event based on its type

标签: javadesign-patterns

解决方案


一般来说,这将由一个switch声明来处理。

List<Event> events = ...
events.forEach(e->{
    switch (e.eventType) {
        case NEW:
          // do new thing
          break;
        case UPDATE:
          // do update thing
          break;
        case DELETE:
          // do delete thing
          break;
        default:
          throw UnexpectedEventType(); // just in case
    }
});

推荐阅读