我正在开发一个涉及版本控制实体的项目,以便归档用户修改的整个历史。
基本上,这个想法是,当创建实体时,其内容的版本 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);
}
}
这是一个好习惯,还是有什么缺点?到目前为止,我所看到的是依赖于存储库的服务,而不是相反。