2

私はポーカーゲームの趣味のプロジェクトを書いています。私のアプリケーションは多くのゲームをデータベースに保存します。PlayerHand(基本的に2枚のカードオブジェクトをプロパティとして使用し、isSuited()、isPaired()などのユーティリティメソッド)、アクション(プレーヤーによる賭け金の引き上げについて説明)、ボード(フロップ、ターン、リバーカードを説明)など。

問題は、データベースストレージの場合、ゲームをよりコンパクトで効率的な方法で記述できることです。たとえば、一意の手ごとに整数を使用できます。このような表現はコンパクトでDBには適していますが、他のロジック実装では、1つの整数よりも手を記述するフィールドを増やしたいと思います。1つのクラスに両方の表現があるという考えは好きではありません。これは正しく見えません。

質問:私の問題にはどのようなアプローチを使用できますか?

私が思いついた最善の解決策は、MVCパターンのようなものです。モデルは私のコンパクトなデータベース表現であり、ビューは私のビジネスロジック表現です。しかし、繰り返しになりますが、このような単純なタスクには複雑すぎるように見えるため、これは私には正しくないようです。よりエレガントなアプローチや、おそらくもっとシンプルなパターンはありますか?

4

2 に答える 2

2

MVCを使用して「エンタープライズ」の方法でそれを行っていた場合、実際に使用するDB表現とゲームエンティティクラス用に別々のオブジェクトがあり、2つの間で変換するための別個のサービスレイヤーがあります。そうすれば、データベースのマッピングがより簡単になり、変換が明示的になります。

ゲームなので、おそらく2つを組み合わせて、DBレイヤーで変換を行います。Hibernateを使用している場合は、カスタムを使用UserTypeしてそのハードワークを実行し、モデルクラスから分離しておくことができます。

于 2012-11-19T11:49:29.380 に答える
2

MVCは、アプリケーション全体を対象としており、フロー制御、プレゼンテーション、ビジネスロジックを分離します。必要なのはデータマッパーなので、データベースについて何も知らないドメインオブジェクトを持つことができます。ほとんどのアプリケーションでは、通常、MVCとデータマッパーの両方を使用します。

于 2012-11-19T11:49:48.913 に答える