Я бы также использовал шаблон синглтона, кроме стратегического.Одна из возможных реализаций (хотя она достаточно открыта, если вам нужен гибкий набор правил, вы должны использовать другой класс для сущности «Правило». Однако, так проще понять):
class Rules {
public:
virtual bool rule_1(Data *) = 0;
// ...
virtual bool rule_n(Data *) = 0;
static Rules * getRules()
{
// The only place in which to change the rule set
if ( ruleSet == NULL ) ruleSet = new Rules_September2010();
return ruleSet;
}
protected:
Rules();
static Rules * ruleSet;
};
class Rules_August2010 : public Rules {
public:
bool rule_1(Data *);
bool rule_n(Data *);
};
class Rules_September2010 : public Rules {
public:
bool rule_1(Data *);
bool rule_n(Data *);
};
Конечно, это указание заголовка (ов).Файлы реализации отсутствуют.Надеюсь, это поможет.