私は粒子輸送コードを書いています。このコードでは、物理オブジェクトはインタフェースVolumeを実装しています。 Volumeの実装者の一人は、このコードの対象となるのはParticleクラスです。私の設計では、ボリュームには他のボリュームが含まれています。これは、Particlesが相互作用を持つボリュームを介して監視されていない飛行したい限り、素晴らしい動作をします。実行時のJavaでオブジェクトのタイプを判別する必要があります。デザインが悪いですか?
しかし、パーティクルに関する情報を記録する、ある種のパーティクル検出器のボリュームを実装したいと思う瞬間、私は問題があります。ボリュームインタフェースには、パーティクルに固有の情報を取得する方法はありません。パーティクルが検出器のボリュームに入る場合、ボリュームからパーティクルにキャストする前に、パーティクルのメソッドを呼び出す前に、そのタイプを反射で確認する必要があります。一般的に(私が見たものから)、このタイプのものには「悪いデザイン」のラベルが付いています。
VolumeインターフェイスのVolume境界を越えてパーティクルだけが交差するようにすることができます(特殊ケースのパーティクルへのインターフェイスを結びます)が、私のコードにその制限を課すことは本当にありません。ボリュームを移動して後で参加できるようにすることができます。
この音は悪いデザインのようですか?この問題を処理する別の明白な方法はありますか?必要に応じてコードを添付しますが、一般的な問題は私の詳細とは独立しているように見えます(そして、言語にはまったく依存しません)。
ありがとうございます。私は本当にここにすべての知識をありがとう。
私はボリュームが世界に何か他のボリュームがあることを知りたくないので、私は特別なインターフェースを作りたくありませんでした。 – user487100