ロボットやアイテムなどを使ったボードゲームをプログラミングしています。
ある時点で、ロボットやエネルギーを持つことができるアイテムのエネルギー値を取得する必要があります。これをプログラムする方法は、各ロボットとエネルギーを持つ各アイテムが、フィールドとしてのEnergyContainerクラス(コードの冗長性を防ぐため)とエネルギー値クラスを持つことです。
ここで、基本的に、要素を受け取るメソッドevaluate()を呼び出します。Elementは、ロボットとアイテムが拡張する抽象クラスです。すべての要素にエネルギーコンテナがあるわけではありません。可能であれば、この要素でgetEnergyContainerを呼び出す必要がありますが、それがもちろんそれを持っている要素である場合に限ります。
私はいくつかの解決策を考えることができます:多くのinstanceOfを使用してからキャストします。たとえば、要素がロボットのインスタンスであるかどうかを尋ねる場合は、要素をロボットにキャストし、要素に対してgetEnergyContainerを呼び出します。これには、元素のサブクラスを持つすべてのエネルギーに対してこれを行う必要があるという明らかな欠点があります。
2番目の解決策は、getEnergyContainerメソッドのみを含むインターフェースを定義し、クラスを持つすべてのエネルギーにこれを実装させることです。このインターフェースの唯一の目的は、1つのメソッドを容易にすることであり、ほとんど空になります。
誰かがより良いアイデアを持っていない限り、「最良の」解決策は何ですか?ほぼ空のインターフェースがマーカーインターフェースとして使われていると思いますが、これは唯一の目的なので、少し気が進まないです。