私はゲーム開発の非常に初期の段階にいます。Warhammer や Warcraft のようなターン制のゲームです。一部のクリーチャーは、被ったダメージを再生できます。これを表すために、このようなインターフェイスがあります
public interface Regenerative {
void regenerates();
}
つまり、再生する生き物は
public class SomeMonster() extends BaseCreature implements Regeneative{
//Code
private int hitPoints;
public void regenerates(){
hitPoints = hitPoints + regenerateValue;
}
}
私が直面している問題は、すべてのクリーチャーが同じ量のヒット ポイントを再生するわけではないため、その量 (regenerateValue) をどこかに配置する必要があることです。私はそれをインターフェースに置くことができないので(量をすべてのクリーチャーに同じにしたくないので)、クリーチャークラスに新しいプロパティを追加することを考えました
public class SomeMonster() extends BaseCreature implements Regeneative{
//Code
private int regenerateValue;
public void regenerates(){
hitPoints = hitPoints + regenerateValue;
}
}
しかし、私はこの方法が好きではありません (再生しないクリーチャーの regenerateValue を 0 にする必要があるのはなぜですか?)。クラスに不要なプロパティを与えているため、設計が悪いと思います。この場合の最善のアプローチは何だと思いますか?