我有事件观察者,它们都观察相同的事件,所以我有一个抽象超类来观察该事件,然后子类覆盖/实现特定功能。
这样做的问题是它不会观察事件,除非我将事件观察者方法放在子类中(这违背了我的设计目的)。
我当然可以这样做,但我想编写尽可能少的代码。
它应该以这种方式工作(我做错了什么吗)?
如果它不应该以这种方式工作,那么我可以为一件事编写一个生产者,然后编写一个拦截器。我认为我的第一种方法更简单,更有可能被其他开发人员正确使用。
示例代码:
超类:
public abstract class AbstractFileWriter
{
public void onReady(@Observes ReadyEvent readyEvent)
{
try
{
handleReady(readyEvent, ...);
}
}
protected abstract handleReady(ReadyEvent readyEvent, otherParameters go here);
}
子类
public class XmlWriter extends AbstractFileWriter
{
protected handleReady( ... )
{ ... }
}
如果我这样写,handleReady 永远不会被调用(而且 onReady 也不会被调用);但是,如果我使用子类中的观察者方法编写它,它会按预期工作。我想以这种方式编写它,因为我必须编写的代码要少得多,而且抽象程度要少一点,这应该使它更容易理解。
沃尔特