ok.. non avevo capito....
resta qualcosa che mi sfugge cmq....
Tu a quanto ho inteso devi leggere da qualche parte questa stringa /file .. quel che è e in base ad un token istanziare l'oggetto appropriato....
Allora.. avrai un Reader / Parser(se xml) che recupare la stringa o il file, interpreta il token e genera l'oggetto.
Event ev = new ConcreteEvent(stringa).

A questo punto la classe astratta Event resta uguale centralizzando la costruzione, mentre la classe concreta sarà del tipo corretto.

i costruttori devono essere modificati per ricevere come parametro la stringa o .. meglio i token visto che li hai già creati nel reader.

mi sono perso qualcosa?