ポーカー ハンド履歴ファイル パーサー (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 について考えるのに多くの時間を費やしています。