さて、スペース インベーダー ゲームのクラス図の v1 と v2 について得た有益なコメントをすべて考慮した後、クラス図をもう一度更新して、すべての変更を実装しました。
これ以上苦労することなく、v3 を提示します。
抽象Bulletクラスの Move および Update メソッドは何も実行せず、メソッドの実装は bullet を継承する具象クラスにあります。これらの各具象クラスは、IMovableインターフェイスから Speed プロパティも継承し、それぞれに独自の速度セットがあります。全体の抽象Bulletクラスとその具象クラスの派生物が戦略パターンです。
質問したいことがあります:シップとインベーダークラスは一度に 1 つの弾丸しか持てませんが、インベーダークラスは弾丸を持たないこともできます。これは、たとえば、エイリアンのすべての列がまだ無傷である場合、最初の列のエイリアンのみが弾丸を発射できます。それらの上の列は撃つことができません。しかし、これをInvaderクラスにどのように実装すればよいでしょうか? 撃てないインベーダーのInvaderクラスの bullet 変数を設定するか、null のままにするか。または、より良いオプションがありますか?
適切なデザインにどんどん近づいていることを願っています。すべてのコメントを歓迎します!