領域驅動設計之聚合與聚合根例項二

2022-06-03 20:36:09 字數 583 閱讀 7513

這個例項主要說明乙個論壇發帖與回覆的場景。

一般大家的理解是回覆必須依賴與帖子,並且回覆是沒有單獨存在的必要,並且帖子與回覆通常具有一些不變性約束規則,比如發布乙個回覆,在帖子中同時增加一次回覆次數;回覆過的帖子就不再允許刪除等,所以一般理解是帖子與回覆屬於乙個聚合,帖子是聚合根,回覆是聚合中的乙個實體。如下:

雖然滿足了聚合與聚合根的劃分的基本要求,但是還應該從兩個方面來考慮:

1.效能:如果帖子與回覆同屬乙個聚合,如果要對乙個帖子新增回覆,必須從聚合根帖子進行操作,並且同時儲存整個聚合。如果乙個帖子被多個人回覆,那就存在併發的問題,效能會比較差。

2.場景:發布帖子與發布回覆應該是兩個獨立的場景,也就是發布乙個帖子後可以沒有回覆,回覆可以是後期任意時刻的乙個操作。

鑑於此,建議的聚合與聚合根的劃分如下:

為了保證規則的一致性,可以通過領域服務或應用層服務協調來保證。

領域驅動設計案例之領域層實體與聚合根實現

在領域層中,可以實現實體與聚合根的業務邏輯,在實現業務邏輯之前,我們首先要確定實體和聚合根的一些基本行為,比如判斷實體是否相等。關於領域物件的具體業務邏輯實現,因為涉及到要與資料庫互動,所以等看完倉儲的實現後,再實現領域物件的業務邏輯。using system using order.domain....

C 高階系列 DDD領域驅動設計初探(一) 聚合

ddd領域驅動設計初探系列文章 根據 領域驅動設計 軟體核心複雜性應對之道.eric.eva 書中的觀點,領域模型是軟體專案的公共語言的核心,是領域專家和開發人員共同遵守的通用語言規則,那麼在ddd裡面,建模的重要性不用多說,所以要想更好理解領域驅動設計,理解領域模型的劃分和建立就變得相當必要。首先...

鏈路聚合的作用與例項

鏈路聚合技術的含義 鏈路聚合是將一組物理介面 在一起作為乙個邏輯介面來增加頻寬的一種方法,又稱多介面負載均衡組成鏈路聚合組,通過在兩台裝置之間建立鏈路聚合組,可以提供更高的通訊頻寬和更高的可靠性。鏈路聚合不僅為裝置通訊提供了冗餘保護,而且不需要對硬體進行公升級。1,每個eth trunk介面下最多可...