我为扑克手历史文件解析器(PHP或Java代码)实现了策略模式。我有一个问题是为几种策略使用的类和对象创建一个干净的OOP方式。
在现实生活中:
我有一个有手牌的游戏
class Hand
{
... // attributes for all strategies
... // (in fact : attributes that define the "core" of a Hand)
}
class Game
{
Hand hands[];
}
一种策略将创建一个对象Game和Hands
class StrategyA implements IStrategy // strategy pattern
{
Game game;
function Parse()
{
game = new Game();
...
}
}
此策略需要游戏和每只手的特定属性 我不能将这些属性放入手或游戏中,尽管只使用一种策略而不是其他策略。 我的问题是:什么是最好的OOP方式?为策略创建特定的类?
class HandForStrategyA extends Hand
{
Int x; // useful only in the strategy A context
}
class StrategyA
{
Game game;
HandForStrategyA hands[];
}
这似乎是一个明显的答案,但我仍然想知道是否有更好的方法。此外,我有语义问题:我应该给我的班级什么样的名字(HandFor ...感觉很糟糕!)。 我是一名老派程序员,非常程序化,我失去了很多时间来考虑“干净”的OOP!
答案 0 :(得分:1)
你自己回答了这个问题“并且这个策略将需要特定的属性用于游戏和手牌”。你写了一个策略,属性将成为这个策略的一部分。