這個實例主要說明一個論壇發帖與回復的場景。
一般大家的理解是回復必須依賴與帖子,並且回復是沒有單獨存在的必要,並且帖子與回復通常具有一些不變性約束規則,比如發布一個回復,在帖子中同時增加一次回復次數;回復過的帖子就不再允許刪除等,所以一般理解是帖子與回復屬於一個聚合,帖子是聚合根,回復是聚合中的一個實體。如下:
雖然滿足了聚合與聚合根的划分的基本要求,但是還應該從兩個方面來考慮:
1.性能:如果帖子與回復同屬一個聚合,如果要對一個帖子添加回復,必須從聚合根帖子進行操作,並且同時保存整個聚合。如果一個帖子被多個人回復,那就存在並發的問題,性能會比較差。
2.場景:發布帖子與發布回復應該是兩個獨立的場景,也就是發布一個帖子后可以沒有回復,回復可以是后期任意時刻的一個操作。
鑒於此,建議的聚合與聚合根的划分如下:
為了保證規則的一致性,可以通過領域服務或應用層服務協調來保證。
歡迎加入QQ討論群:309287205