Что было бы хорошим дизайном для класса парсера, анализирующего два разных файла? [closed]

У меня вопрос по дизайну на 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;

На данный момент я могу думать только об определении этих векторов как глобальных переменных, что меня не устраивает.

Мои вопросы

  1. Насколько хорош предложенный дизайн с точки зрения ООП?
  2. Есть ли предположение, что мне не нужно определять вектор каждого типа как глобальную переменную?
  3. Как я могу изменить его, чтобы сделать его масштабируемым для большего количества и размера файлов? скажем, вместо 2 у меня есть миллионы файлов с этими двумя схемами и множеством разных строк.
  4. Должны ли мы определять виртуальные функции в базовом классе с общедоступным или защищенным спецификатором?

Спасибо за любые предложения и отзывы

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *