У меня есть наблюдатели событий, которые все наблюдают одно и то же событие, поэтому у меня есть абстрактный суперкласс, который наблюдает за этим событием, а затем подкласс переопределяет / реализует определенные функции.
Проблема в том, что он не наблюдает событие, если я не поместил метод наблюдателя события в подкласс (который противоречит цели моего проекта).
Я, безусловно, могу сделать это таким образом, но я хочу написать как можно меньше кода.
Должно ли это работать таким образом (я делаю что-то еще неправильно)?
Если это не должно работать таким образом, тогда я могу написать продюсера для одной вещи, а затем перехватчик. Я подумал, что мой первый подход был проще и с большей вероятностью будет использоваться другими разработчиками.
пример кода:
SuperClass:
public abstract class AbstractFileWriter
{
public void onReady(@Observes ReadyEvent readyEvent)
{
try
{
handleReady(readyEvent, ...);
}
}
protected abstract handleReady(ReadyEvent readyEvent, otherParameters go here);
}
SubClass
public class XmlWriter extends AbstractFileWriter
{
protected handleReady( ... )
{ ... }
}
Если я напишу это так, handleReady никогда не будет вызываться (и ни один из них не является в этом отношении); однако, если я напишу его с помощью метода наблюдателя в подклассе, он будет работать как положено. Я хочу написать это таким образом, так как мне нужно будет написать гораздо меньше кода и немного меньше абстракции, которая облегчит понимание.
Walter