2015-12-02 54 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

相關問題