Я реализовал шаблон стратегии для парсера файла истории покера (код PHP или Java).У меня проблема с созданием чистого ООП для классов и объектов, используемых несколькими стратегиями.
В реальной жизни:
У меня есть класс Game, в котором есть Рука (и)
class Hand
{
... // attributes for all strategies
... // (in fact : attributes that define the "core" of a Hand)
}
class Game
{
Hand hands[];
}
Одна стратегия создаст объект Game and the 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 ... чувствует себя плохо!).Я программист старой школы, очень процедурный, и я теряю так много времени, чтобы думать о «чистом» ООП!