1
我实现了一个扑克手历史文件解析器(PHP或Java代码)的策略模式。我有一个问题来为几个策略使用的类和对象创建一个干净的OOP方法。如何将外部类用于策略模式?
在现实生活中:
我有一个类游戏,其中有手(S)
class Hand
{
... // attributes for all strategies
... // (in fact : attributes that define the "core" of a Hand)
}
class Game
{
Hand hands[];
}
一种策略将创建一个对象,游戏和手
class StrategyA implements IStrategy // strategy pattern
{
Game game;
function Parse()
{
game = new Game();
...
}
}
而这个策略将需要特定属性的游戏和每只手 我不能把这些属性放到手或游戏中只有一种策略使用,而不是其他策略。 我的问题是:什么是最好的面向对象的方式?为该策略创建特定的类?
class HandForStrategyA extends Hand
{
Int x; // useful only in the strategy A context
}
class StrategyA
{
Game game;
HandForStrategyA hands[];
}
这似乎是一个明显的答案,但我仍然想知道是否有更好的方法。此外,我有一个语义问题:我应该给我的班级什么样的名字(HandFor ...感觉不好!)。 我是一位老派程序员,程序非常流畅,我失去了那么多时间来思考“干净”的面向对象!
重要:每个手的特定属性。那么,我必须创建一个继承Hand类的类,只是为了我的策略?有没有其他的方法? – Antoine 2010-12-06 16:20:39