2013-07-05 38 views
0

隨着軟件的更新,輸入數據的格式可能會從版本1更改爲2,3等等。該軟件希望是後向兼容的。編碼時如何處理這些不同的版本?如何在讀取數據時處理不同版本的格式?

例如,我有一個類Data,它有一些成員變量。 Read來自文件的數據是指定那些成員變量。在新版本中,類Data具有更多成員變量。爲了使後向兼容,當讀取舊版本數據時,新的成員變量具有默認值。如何實現它?

+0

您正在談論的一些示例可能是 – DGomez

+0

如果您需要支持運行時切換版本,請考慮使用策略pattren。 –

回答

2

的條目添加到(1),其指示它是哪個版本的數據文件的。訪問文件時,請檢查標題中的版本信息,並使用相應的一組函數來加載數據。

如果數據文件還沒有某種類型的標題,您應該添加一個。

struct header 
{ 
    char signature_[16]; // some arbitrary data identifying it as your data file 
    int version_;  // version number 
    // ... more data ... 
}; 

header_ hdr; 
ReadHeader(inFile, &hdr); 

Data* data; 
switch(hdr) 
{ 
case 1: data = LoadVersion1Data(inFile); break; 
case 2: data = LoadVersion2Data(inFile); break; 
case 3: data = LoadVersion3Data(inFile); break; 
} 

1.一種頭是簡單的數據塊通常具有一個已知的固定大小和駐留在數據文件的開頭。

相關問題