Как избежать instanceof в Java

У меня есть следующая (возможно, общая) проблема, и она меня совершенно озадачивает на данный момент:

Есть пара сгенерированных объектов событий, которые расширяют абстрактный класс Событие и я хочу разделить их на Session Beans, например

public void divideEvent(Event event) {
    if (event instanceof DocumentEvent) {
        documentGenerator.gerenateDocument(event);
    } else if (event instanceof MailEvent) {
        deliveryManager.deliverMail(event);
        ...
    }
    ...

}

. Но в будущем может быть больше двух типов событий, поэтому if-else будет длинным и, возможно, нечитаемым. Кроме того, я думаю, что instanceof в данном случае не является «лучшей практикой».

Я мог бы добавить абстрактный метод к типу Event и заставить их разделиться, но тогда я должен внедрить определенные Сессионные Бины в каждую сущность.

Есть ли какой-нибудь намек для достижения "красивого" "решение этой проблемы?

Спасибо за любую помощь!

63
задан fnst 27 May 2011 в 21:22
поделиться