私の言語のMyDslJavaValidator
バリデータに@Check
は、ツリーのトップからのコンテキスト情報を必要とする が含まれています。指定された要素から開始してモデルをトラバースすることにより、check メソッド自体でその情報を収集できます。ただし、コンテキスト情報は現在の要素に依存しないため、これはかなり非効率的です。
一部の状態を一度だけ計算し、すべての検証で使用できるようにする方法はありますか? 状態をメンバー変数にキャッシュすることは確かにできますが、バリデータ オブジェクトのライフサイクルが不明なため、これが安全かどうかはわかりません。明らかに、基礎となるモデルが変更されたときに情報を再計算する必要があります。
このような状況で従うのに最適なパターンは何ですか?