如何根据事件类型处理事件

时间:2019-05-02 04:14:53

标签: java design-patterns

说我有一个事件类,其中包含数据和事件类型(来自远程服务)

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

其中EventType是枚举:

public enum EventType{
 NEW,UPDATE,DELETE
}

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

例如:

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

1 个答案:

答案 0 :(得分:2)

通常来说,这可以通过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
    }
});