コンテキストとして、私はゲームをポケモンのラインに沿ったものにしようとしています. モンスターを入手し、訓練し、戦います。
モンスターの各種は、抽象基本クラスから継承するクラスであり (そのため、固有の動作を持つことができます)、ゲーム全体で非常に多くの異なる種が存在することを願っています。元:
abstract class Monster {
int hp;
void attack();
//Etc.
}
public class FireBreathingDragon extends Monster {
static String species_name = "Fire Breathing Dragon";
//Blah
}
そのため、プレイヤーが探索しているとき、彼らはランダムに地域に固有のモンスターに遭遇します. 次に、ゲームは、その地域に生息する種のリストからランダムにモンスターを作成する必要があります。このコードを領域間で再利用できるようにする (そして、コード内の他の場所で動的にモンスターを簡単に作成できるようにする) ために、可能性を領域にハードコーディングしたくありません。代わりに、特定の種のモンスターをオンデマンドで作成する工場のようなものが欲しいと思います。たとえば、次のようなものです。
public class MonsterFactory {
Monster createMonster(
String species_name,
//Possibly other paramters
);
}
問題は、createMonster
(潜在的に)数十または数百の異なるモンスタークラスがある場合に、「素敵な」または「エレガントな」方法で実装することです。もちろん、非常に長いif-else if-else
orswitch
ステートメントを使用することもできますが、それを書いて拡張するのは恐ろしいことです。これを行う良い方法はありますか?また、モンスターを追加する際に比較的簡単に拡張できると良いです。
または、代わりに使用する必要があるまったく異なるデザインがありますか?
免責事項: 私の Java は少し錆びており、構文が完全ではない可能性があります。申し訳ありません。