Я проектирую библиотеку Win32 для синтаксического анализа содержимого файла (столбцы и значения) и его внутреннего хранения в структуре данных (карта). Теперь мне нужно предоставить API, чтобы потребитель мог вызывать эти API для получения результатов.
Файл может иметь разные форматы, например, FM1, FM2 и т. Д. Потребитель может запросить, например,
FM1Provider.GetRecords("XYZ");
FM2Provider.GetRecords("XYZ");
То, что я планирую сделать, - это иметь класс CParser, который будет выполнять весь анализ и выставлять класс.
CParser
{
bool LoadFile(string strFile);
Map<string,string> GetFM1Records(string key);
Map<string,string> GetFM1Records(string key);
};
или
class CResultProvider
{
virtual Map<string,string> GetRecords(string key)=0;
}
class CFM1ResultProvider : public CResultProvider
{
Map<string,string> GetRecords(string key);
}
class CFM2ResultProvider : public CResultProvider
{
Map<string,string> GetRecords(string key);
}
CParser
{
bool LoadFile(string strFile);
CResultProvider GetFM1ResultProvider();
CResultProvider GetFM1ResultProvider();
};
Пожалуйста, предложите мне, какой из этих подходов является правильным и масштабируемым, учитывая, что я занимаюсь разработкой библиотеки.