1

ポーカー ハンド履歴ファイル パーサー (PHP または Java コード) の戦略パターンを実装しました。いくつかの戦略で使用されるクラスとオブジェクトのクリーンな OOP 方法を作成するのに問題があります。

実生活では :

Hand(s) を持つクラス Game があります

class Hand
{
    ... // attributes for all strategies 
    ... // (in fact : attributes that define the "core" of a Hand)
}
class Game
{
    Hand hands[];
}

1 つの戦略は、オブジェクト ゲームと手を作成します。

class StrategyA implements IStrategy // strategy pattern    
{
    Game game;
    function Parse()
    {
        game = new Game();
        ...
    }
}

そして、この戦略にはゲームと各ハンド に特定の属性が必要です。これらの属性をハンドまたはゲームに入れることはできませんが、1 つの戦略でのみ使用され、他の戦略では使用されません。私の質問は次のとおりです。最適な OOP の方法は何ですか? 戦略のための特定のクラスを作成しますか?

class HandForStrategyA extends Hand
{
    Int x; // useful only in the strategy A context
}
class StrategyA
{
    Game game;
    HandForStrategyA hands[];
}

それは明らかな答えのように思えますが、もっと良い方法があるかどうかまだ疑問に思っています。さらに、セマンティックに問題があります。クラスにどのような名前を付ける必要がありますか (HandFor... 気分が悪い!)。私は古い学校のプログラマーであり、非常に手続き型であり、「クリーンな」 OOP について考えるのに多くの時間を費やしています。

4

1 に答える 1

1

「そして、この戦略にはゲームとハンドに特定の属性が必要です」という質問にあなた自身が答えました。戦略を作成すると、属性がこの戦略の一部になります。

于 2010-12-06T16:17:49.860 に答える