パラメータを持つ静的ユーティリティクラスがあるプログラム/ゲームに取り組んでいます。
class ParamsGeneral {
public static final int H_FACTOR = 100;
public static int MAX_SCORE = 1000;
...
}
次に、スコアが制限されたマップでプレイするなど、特定のケースでこの値をオーバーライドする必要があります。だから私は次のことをしました:
class ParamsLimited extends ParamsGeneral {
public static int MAX_SCORE = 500;
// other params stay same
}
そして、使用目的は次のとおりです。
class Player {
ParamsGeneral par;
public Player() {
if(onLimitedMap()){
par = new ParamLimited();
}
}
public boolean isWinner() {
if(this.score == par.MAX_SCORE) {
return true;
}
return false;
}
}
IDE は、インスタンスを介した静的フィールドの呼び出しと、フィールドの非表示について不平を言っているため、このコードを実際にテストしていません。このコードが悪臭を放っていることは明らかです。これを達成する方法はありますか、それとも各パラメーター クラスを個別に記述する必要がありますか?
PS: デフォルトのクラスを抽象化し、ゲッターを使用する必要があることはわかっています。値に静的にアクセスできるようにする方法があるかどうかに興味があります。