在下面,我希望EventHandler以其他方式處理EventA,以另一種方式處理EventB,以及其他任何事件(EventC,EventD)。 EventReceiver僅接收對事件的引用並調用EventHandler.handle()。總是被調用的版本當然是EventHandler.handle(Event event)。以Java多態調度
沒有使用instanceOf,有沒有一種方法來多態調度(也許通過EventHandler或泛型中的另一種方法)到適當的句柄方法?
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對訪問者模式 – 2011-01-19 16:00:44
我想過Visitor模式和非循環Vistor模式。不幸的是,我無法修改Event類。而且,我需要隨着時間的推移添加許多專門的活動。 – user581638 2011-01-19 17:08:31