Что будет лучшим подходом для репозитория на основе 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 предоставляет «пакетную» парадигму, которую я считаю более гибкой по ряду причин.