In seguito, desidero che EventHandler gestisca EventA in un modo, EventB in un altro modo e qualsiasi altro evento (EventC, EventD) in un altro modo. EventReceiver riceve solo un riferimento a un evento e chiama EventHandler.handle(). La versione che viene sempre chiamata, ovviamente, è EventHandler.handle (Evento evento).Invio polymorphic in Java
Senza utilizzare instanceOf, esiste un modo per inviare polimorficamente (magari tramite un altro metodo in EventHandler o generici) al metodo handle appropriato?
class EventA extends Event {
}
class EventB extends Event {
}
class EventC extends Event {
}
class EventD extends Event {
}
class EventHandler {
void handle(EventA event) {
System.out.println("Handling EventA");
}
void handle(EventB event) {
System.out.println("Handling EventB");
}
void handle(Event event) {
System.out.println("Handling Event");
}
}
class EventReceiver {
private EventHandler handler;
void receive(Event event) {
handler.handle(event);
}
}
+1 per il modello di visitatore –
Ho pensato al pattern Visitor e al pattern Vistor aciclico. Sfortunatamente, non posso modificare la classe Event. Inoltre, dovrò aggiungere molti eventi specializzati nel tempo. – user581638