我正在設計一個Win32庫來解析文件(列和值)的內容並將其存儲在數據結構(映射)中。現在我需要公開API,以便消費者可以調用這些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();
};
請給我建議這些方法之一是正確的,可擴展的考慮我正在開發一個圖書館。
+1:他可以製作採用輸出迭代器(其類型是模板參數)的解析器函數模板,以便將數據寫入其中。如果他想讓他們成爲虛擬功能,這當然是有問題的。 –
回調更靈活,然後輸出迭代器,因爲解析器可能吐出多種類型的元素。 –
@Maxim:同意,我將有一個暴露的類CMylib。其他兩個只能分析的類CParser和存儲解析數據的CDatastore。我將創建CDataStore作爲CMyLib類的成員變量,並且CParser類將在解析時實例化,並在解析後立即刪除。現在的問題是,我應該如何公開API以確保數據庫的數據庫?所以現在你可以考慮在我之前的例子中,CParser被CMyLib – Jeeva