私はすべて同じイベントを観察するイベントオブザーバーを持っているので、そのイベントを観察する抽象スーパークラスがあり、サブクラスが特定の機能をオーバーライド/実装します。
これの問題は、イベント オブザーバー メソッドをサブクラスに配置しない限り、イベントを監視しないことです (これは私の設計の目的を無効にします)。
私は間違いなくこの方法でそれを行うことができますが、できるだけ少ないコードを書きたいと思っています。
このように動作する必要がありますか (私は何か間違ったことをしていますか)?
このように動作することが想定されていない場合は、プロデューサーを作成してからインターセプターを作成できます。私の最初のアプローチはよりシンプルで、他の開発者が適切に使用する可能性が高いと考えました。
コード例:
スーパークラス:
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 も呼び出されません)。しかし、サブクラス内でオブザーバー メソッドを使用して記述すると、期待どおりに動作します。書かなければならないコードがはるかに少なく、抽象化が少し少ないため、理解しやすくなるので、この方法で書きたいと思います。
ウォルター