私はポーカーゲームを正しいOOPモデルに翻訳しようとしています。
基礎:ジェネリッククラスに属性を「埋め込む」ことを避けるには?
class Hand
{
Card cards[];
}
class Game
{
Hand hands[];
}
私は、テキストファイルからゲームや手を得ます。私はいくつかの理由で、テキストファイルを複数回解析:
- GETサムスに関する情報(理由1)
- は、いくつかの統計(理由2)
- を計算...
理由1についてクラスハンドにはいくつかの属性(a1、b1)が必要です。理由2のために、私は他の属性(a2、b2)が必要です。私は汚い道は次のようになると思います:
class Hand
{
Card cards[];
Int a1,b1;
Int a2,b2;
}
私は、いくつかの属性がほとんど役に立たないことを意味します。だから、 、クリーンであることを、私たちが行うことができます:
class Hand
{
Card cards[];
}
class HandForReason1 extends Hand
{
Int a1,b1;
}
しかし、私はハンマーを使用してのように感じる...
私の質問は:中間方法はありますか?または、ハンマーの解決策が良いですか? (その場合、正しいセマンティックは何ですか?)
PS:デザインパターン歓迎:-)
PS2:戦略パターンはハンマーですね。ここで
* EDIT * は、アプリケーションです:
// Parse the file, read game infos (reason 1)
// Hand.a2 is not needed here !
class Parser_Infos
{
Game game;
function Parse()
{
game.hands[0].a1 = ...
}
}
// Later, parse the file and get some statistics (reason 2)
// Hand.a1 is not needed here !
class Parser_Stats
{
Game game;
function Parse()
{
game.hand[0].a2 = ...
}
}
htmlであなたの投稿を書式設定することは多かれ少なかれ動作しますが、Stack Overflowが提供するmarkdownエンジンを使用する方が簡単かつ迅速になります。 [編集ヘルプページ](http://stackoverflow.com/editing-help)。 – dmckee
実際の人生の例をあなたの '属性'に使うと、あなたの問題を把握するのがずっと簡単になると思います。 a1とb1、a2とb2はどういう意味ですか? – Fortega