次のドメイン オブジェクトがあります。
public interface Event {}
public class FirstEvent {}
public class SecondEvent {}
次に、ドメインオブジェクトから完全に分離する必要がある別のモジュールがあります。つまり、ドメインオブジェクトを認識していますが、ドメインオブジェクトはこの追加モジュールの存在を認識すべきではありません。
このモジュールでは、共通のインターフェイスEvent
を介してオブジェクトを受け取り、特定のイベント タイプに基づいて異なる動作をする必要があります。
現在、私のコードは次のようになっています。
if (event instanceof FirstEvent.class) {
doFirst();
}
else if (event instanceof SecondEvent.class) {
doSecond();
}
それは問題なく動作しますが、静的分析ツールとコード レビュー担当者は、使用すべきではなくinstanceof
、よりオブジェクト指向のアプローチに置き換える必要があると不満を漏らしています。反射またはgetClass()
オプションもありません。
Javaでそれを行う方法は?
の置換に関する多くの既存の質問を確認しましinstanceof
たが、それらはすべてドメイン オブジェクトにロジックを直接追加することを提案していました。ただし、この場合、モジュールに固有のロジックでそれらを汚染したくありません。