我正在研究涉及版本控制實體的項目,以便用戶修改整個歷史記錄。根據服務有一個存儲庫可以嗎?
基本上,這個想法是當一個實體被創建時,其內容的版本1也被保存在一個存檔表中。無論何時修改實體,都會存儲增量版本。
將實體的狀態保存到歸檔表由ArchiveService
處理。
當實體被持久化時,ArchiveService需要被調用,以創建第1版,所以最合理的方式似乎是從存儲庫調用它,從而通過服務作爲一個依賴到倉庫:
public class Repository {
private ArchiveService archiveService;
public Repository(ArchiveService service) {
this.archiveService = service;
}
public void add(Entity entity) {
// ... (persist the entity)
this.archiveService.createVersion(entity);
}
}
這是一個很好的做法,還是有任何缺點? 到目前爲止,我所看到的服務取決於存儲庫,而不是其他方式。
我一直認爲存儲庫是域的一部分。你有這樣的來源嗎? – Benjamin
@Benjamin我在最新的答案中詳細闡述了這一點。 –
謝謝,這有助於很多。 – Benjamin