У меня вопрос по дизайну на C ++. Мне в голову пришла идея, но я ценю любую обратную связь.
Описание
Мне нужно проанализировать два разных файла, содержащих необработанные файлы (у них совершенно другой набор данных), и сохранить их в другой структуре или классе. И затем мне нужно сопоставить их, а это значит, что мне нужно получить доступ к сохраненным данным вместе.
Мое решение
Мой план состоял в том, чтобы определить базовый класс (Base), который будет содержать закрытые данные и некоторые функции, которые им нужны, например, открытие и чтение файлов построчно и извлечение различных значений, соответствующих разделителю, имеющемуся у каждого из них. Затем определите два подкласса (subClass1 и subClass2), которые они должны реализовать, заполняя различные структуры данных и распечатывая их значения.
Резюме дизайна
BaseClass () {
protected:
// some shared data members such as
string _parsedFile;
string _inputFileName;
virtual void captureFileData() =0;
virtual void printFileData() =0;
public:
BaseClass();
void readFileLinebyLine () {
//
}
// and more...
};
class subClass1: public BaseClass {
private:
Type1Class * type1Class;
public:
//virtual function implementations
void captureFileData() {
}
void printFileData() {
}
};
class subClass2: public BaseClass {
private:
Type2Class * type2Class;
public:
//virtual function implementations
void captureFileData() {
}
void printFileData() {
}
};
Я просто хотел получить несколько предложений / отзывов, если у предложенного дизайна есть какие-либо проблемы? Также в функции вызывающего абонента мне нужно проанализировать каждый файл и сохранить их в векторе разных типов.
vector<Type1Class> datVec1;
vector<Type2Class> datVec2;
На данный момент я могу думать только об определении этих векторов как глобальных переменных, что меня не устраивает.
Мои вопросы
- Насколько хорош предложенный дизайн с точки зрения ООП?
- Есть ли предположение, что мне не нужно определять вектор каждого типа как глобальную переменную?
- Как я могу изменить его, чтобы сделать его масштабируемым для большего количества и размера файлов? скажем, вместо 2 у меня есть миллионы файлов с этими двумя схемами и множеством разных строк.
- Должны ли мы определять виртуальные функции в базовом классе с общедоступным или защищенным спецификатором?
Спасибо за любые предложения и отзывы