コンソールに基づいたシンプルなゲーム遊戯王を開発しようとしています。トラップカード、マジックカード、モンスターカードの3つのクラスに継承するスーパーカードを作りました。しかし、そのゲームにいくつかのパターンを追加する必要があります。Singleton と Factory パターンのどちらを選択するのが最適ですか。
ゲームのどこにパターンを配置する必要がありますか?
コンソールに基づいたシンプルなゲーム遊戯王を開発しようとしています。トラップカード、マジックカード、モンスターカードの3つのクラスに継承するスーパーカードを作りました。しかし、そのゲームにいくつかのパターンを追加する必要があります。Singleton と Factory パターンのどちらを選択するのが最適ですか。
ゲームのどこにパターンを配置する必要がありますか?
シングルトン パターンは、単一インスタンス オブジェクト用です。ファクトリ パターンは、スーパー クラスまたはオブジェクトのさまざまなインスタンスを作成するためのものです。
シングルトン パターンは、ゲーム自体とオブジェクト マネージャー (グラフィック オブジェクト インスタンスまたは任意のレンダリング オブジェクト、サウンド マネージャー、ゲーム マネージャー、ロジック マネージャーなど) に適用できます。
ファクトリ パターンは、デッキやその他のオブジェクト生成メカニズムをシャッフルするときに使用できます。おそらくAIの動きなど。
イベント チェーン、AI、ダイアログ イベントなどに使用できるパターンは他にもたくさんあります。
コードボックスは正しいですが、少なくともゲームを適切に詳細に説明するには、ある種の図が必要です。多分あなたはそれから始めるべきです。(クラス図とシーケンス図を作成すると遊戯王で動作します)
それはあなたが望むものに依存します。シングルトン インスタンスは、プログラム全体で一意になります。たとえば、プログラム内の他のすべてのオブジェクトで共有される 1 つのトラップカードを持つことができます。適切なカードのインスタンスを作成する方法だけが必要な場合は、ファクトリ パターンを使用することをお勧めします。
「自分のパターンをどこに配置するか」および「ファクトリにするかシングルトンにするか」を尋ねている場合は、アプローチを再考する必要があります。一般に、パターンは、ソフトウェア開発中に遭遇する一般的な問題を解決するために設計および実装されます。これらの問題が発生する前に、目的なく使用しないでください。
遊戯王が何であるかはわかりませんが、あなたの説明から、これらのパターンを本当に使用したい場合 (つまり、教育目的)、Factory を使用してこれらのカード オブジェクトを構築し、シングルトンを使用していくつかのログ メカニズムを実装しますが、再び-前述のようにあなたの質問の上はあいまいです。