保持对分层对象的更改的好模式是什么?

时间:2015-12-02 20:36:44

标签: java spring design-patterns serialization

考虑到我们有一个类似的对象层次结构如下图所示,其中User有一组Profiles,每个配置文件都有一组Settings

class User {
   private final List<Profile> profiles;
}

class Profile {
   private final List<String> settings;
}

确保对上述对象的任何更改也会持久保存到磁盘有什么好方法?假设Profile可能很大,我希望避免将整个User保留为Profile中的修改。

请注意,这是一个设计问题,而不是选择正确的对象序列化库的问题。

1 个答案:

答案 0 :(得分:0)

  

确保对上述对象的任何更改也会持久保存到磁盘?

简短的回答,如果你在谈论设计,就是让用户成为聚合根,并让用户保持它拥有的对象层次结构的一致性。

  

避免让整个用户继续修改个人资料。

在这种情况下,您需要事件采购。 简而言之,您需要存储对配置文件/设置所做的更改。在加载用户时,从事件流(事实)重建配置文件/设置,这是迄今为止所做的更改。

花时间看看这个: CQRS and event sourcing by Greg Young @ YouTube