У меня есть немного сложная модель, которую я сейчас реорганизую в попытке сделать код чище и проще в обслуживании. Модель содержит основной бит функциональности, а затем различные модели. Каждая модель снова имеет два класса, один для хранения (данные) и второй для выполнения модели (помощник). Вспомогательные классы создаются в миллионах раз по всему основному циклу, но зависят от класса данных.
Прямо сейчас я подошел к коду следующим образом:
main() {
Base* dataptr = chooseInstance(int x);
Base& data = *dataptr;
// do stuff with data
};
Base* chooseInstance(x) { /* returns instance of A:Base or B:Base */ };
Впоследствии у меня есть вспомогательный класс, специфичный для A или B, который необходимо неоднократно вызывать на протяжении всей программы. В настоящее время я занимаюсь этим так:
...
HelperBase* helper = data.getHelper(); // returns custom *HelperA or *HelperB class
helper->doStuff();
...
Этот подход работает достаточно хорошо, но не очень элегантно. Это что-то, что было бы лучше обрабатывать иначе с шаблонами или что-то подобное?
Я понимаю, что этот вопрос немного расплывчатый, так как это скорее вопрос стиля, а не конкретной правильной / неправильной проблемы — извинения за это.
Задача ещё не решена.
Других решений пока нет …