2015-12-02 51 views
0

请考虑我们有一个类似的对象层次结构,其中User有一组Profiles,每个配置文件一组Settings什么是保持更改分层对象的良好模式?

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

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

什么是确保上述对象的任何更改也保存到磁盘的好方法?假设Profile可能很大,我想避免在整个User中修改Profile

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

+0

你有没有想过只存储自上次同步已做了区别?然后你甚至可以重播更改。 – k0ner

+0

也有一些称为结构共享 - 也许这个想法可以帮助你 – k0ner

回答

0

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

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

避免在整个配置文件中修改整个用户。

听起来像你需要在这种情况下的事件采购。 总之,您需要存储对配置文件/设置所做的更改。并且在加载用户时从事件流(事实)重建配置文件/设置,这是迄今为止所做的改变。

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

相关问题