Per il tuo scopo puoi usare una classe chiamata AbstractFactory che ti restituisce in base ad un parametro che gli passi la classe appropriata.
Es.

codice:
public class Reader {
private Event e;
private AbstractFactory ab;
public Reader(){
//inzializzi le variabili
//leggi stringa
e=ab.get(parametri);
//esegui le operazioni su e;
}
}
public class AbstractFactory{
public Event get(parametri){
if(parametri==ClientEvent)
 return new ClientEvent();
else if(parametri==WebEvent)
 return new WebEvent();
return null;
}
}
Ti salvi i token precedenti , e in base al quarto ti fai restituire la classe appropriata.
Spero di aver capito