什麼將是一個基於XML的存儲庫中的更好的方法:XML存儲庫;保存()或不保存()
1)保存在每次調用庫更改基礎XML文檔...
public class XmlRepository1
{
private XDocument xDocument;
public void CrudOp()
{
// Perform CRUD operation...
// Call Save()
xDocument.Save(path);
}
}
或
2)提供一種具有調用SaveChanges()方法的最終用戶...
public class XmlRepository2
{
private XDocument xDocument;
public void CrudOp()
{
// Perform CRUD operation...
// DON'T call save
}
// Provide a SaveChanges() method to the end-user...
public void SaveChanges()
{
xDocument.Save(path);
}
}
我的傾向傾向於選項1,因爲提供SaveChanges()方法看起來不像是存儲庫的責任。然而,我猜測這個決定的原因有以下幾個:
a)在多線程環境中,這給最終用戶提供了一種簡單的方法來回滾更改,如果調用存儲庫失敗,使物體處於部分變異狀態。 b)選項2提供了一個「批次式」的範例,我可以看到,由於各種原因,這種範例更加靈活。
作爲對(a)的評論,無論發生什麼事情,都不應將您的存儲庫置於部分變異狀態。 –
@Matthew - 讓我澄清...存儲庫不會讓對象部分變異。但是如果一個最終用戶改變一個對象的狀態,調用Repository.Update(obj)並且調用失敗......(你知道我要去哪裏?)我可能在這裏過分偏執,我真的不知道不知道... – Didaxis