1

ボードゲームの移植を試みています。ボードゲームの各プレイヤーは、8 つの異なるキャラクターから 1 つを選択します。各キャラクターには特別な能力といくつかのフレーバー テキストがありますが、それ以外はほぼ同じです。

現在、私はBaseHeroクラスを持っています。8 種類のキャラクターごとにクラスを作成し、それらを拡張しBaseHeroました。ただし、同じ文字が複数存在することはありません。これはこれを実装する最良の方法ですか?

別のアイデアCharacterListとしては、すべての特殊能力のコードと、それらがゲーム内に存在するかどうかを判断するためのブール値テストを含むクラスを作成することでしたが、それはあまりにも扱いにくく、明らかにモジュール化されていないと感じました。

4

5 に答える 5

1

抽象化してBaseHero、別の文字にサブクラス化せずにインスタンス化できないようにしますが、それでもいくつかの優れた継承の利点が得られます。シングルトン パターンを強制して、一度に 1 つずつしか作成できないようにすることもできますが、その文字が使用されているかどうかのフラグを設定するだけでも簡単です。

CharacterList別のものであるべきです。文字のリストが必要な場合は、List<BaseHero>. 他のすべてのロジックを List クラスに入れることは、私には意味がありません。

また、キャラクターを作成する際は、継承よりも合成に従うようにしてください。たとえば、キャラクター ISA characterWithAbility の代わりにキャラクター HASA 能力。

于 2013-09-20T19:40:32.230 に答える
1

インスタンスの数は、クラスが存在するかどうかとは関係ありません。クラスを 1 回だけインスタンス化するのは完全に正常です。あなたのデザインはBaseHero合理的に聞こえます。

于 2013-09-20T19:39:21.507 に答える