Прежде всего, это вопрос дизайна, а не проблема:
У меня есть приложение, написанное на C ++.
Структура выглядит следующим образом:
class Step1
{
public:
Step1();
void process();
void setValue(int v); // is to change the value
private:
int value;
}
class Step2
{
public:
Step2();
void process();
void setValue(int v); // is to change the value
private:
int value;
}
void main()
{
Step1 step1();
Step2 step2();
step1.setValue(1);
step2.setValue(2);
step1.process();
step2.process();
}
Мне разрешено изменять текущую архитектуру, но необходимо настроить все шаги извне. Я предлагаю создать XML-файл, содержащий параметры конфигурации:
<?xml version="1.0"?>
<Steps>
<Step id="step1">
<param method="setValue" variable="v" value="1" />
</Step>
<Step id="step2">
<param method="setValue" variable="v" value="2" />
</Step>
</Steps>
А потом я добавлю класс для разбора XML-файла:
класс XmlParser
{
общественности:
XmlParser ();
int parse (строка xmlFile, строка paramValue);
}
тогда я думаю, что я изменю только основной класс:
void main()
{
Step1 step1();
Step2 step2();
XmlParser xmlParser();
step1.setValue(xmlParser.parse(,));
step2.setValue(xmlParser.parse(,));
step1.process();
step2.process();
}
У меня более 20 шагов, и на каждом шаге нужно настроить около 10 методов. Является ли хорошей идеей изменить архитектуру таким образом, чтобы класс XmlParser проанализировал файл xml и передал значения заданным методам шагов. Или есть лучший способ сделать это?
Мне бы хотелось узнать ваше мнение.
Заранее спасибо.