Я бы построил несвязанную структуру событий, что означает, что производитель событий не будет напрямую связан с потребителем событий.
Это может быть EventManager, EventProducer и EventListener, работающие вместе с семантикой публикации / подписки.
- Когда система запускается (или при первом использовании), создается EventManager.
- EventListener регистрируется для получения определенного типа событий.
- EventProducer создает события и публикует их в EventManager
public interface EventManager {
public void postEvent(Event event);
public void addListener(Class eventType, EventListener listener);
}
public interface EventListener {
public void handleEvent(Event event);
}
Таким образом, когда вы сериализуете производителя, EventManager все еще поддерживает список подписанных слушателей. после десериализации объекта он все еще может публиковать события в EventManager.