Я хочу, чтобы избежать использования InstanceOf:Избегайте использования InstanceOf Patterns
вот мой случай:
Определение моих событий классы находятся в модуле в свободного городского:
public class Event1 extends AbstractEvent{
}
public class Event2 extends AbstractEvent{
}
public class Event3 extends AbstractEvent{
}
в другом модуле под названием jms У меня есть слушатель, который принимает сообщение о событии из очереди:
public class MyMessageListener implements MessageListener {
@Override
public void onMessage(Message message) {
// CONVERT message to Event Object
if (event instanceof Event1) {
// Execute Processing 1
}
if (event instanceof Event2) {
// Execute Processing 2
}
if (event instanceof Event3) {
// Execute Processing 3
}
}
Я хочу, чтобы избежать использования instanceof
и лучшие вещи делают это шаблон посетитель с execute
методом в классах AbstractEvent
и каждый лист будет осуществлять его.
Моя проблема заключается в том, что в общем пакете у меня нет доступа к классам, ответственным за обработку. классы тезисов существуют только в модуле jms.
Есть ли какие-либо советы или намек, чтобы сделать это (Advanced Visitor) или другой рисунок, чтобы сделать это
Я бы добавил абстрактный метод к AbstractEvent и переместил код обработки на события – teodozjan