我正在嘗試使用 DDD 和六邊形架構(gòu)將整體式應(yīng)用程式重寫到模組化整體式應(yīng)用程式上。首先嘗試提取三個(gè)模組(聚合):「Shared」、「User」和「Article」。
據(jù)我正確理解,「使用者」和「文章」之間不應(yīng)創(chuàng)建任何依賴關(guān)係。但是,它們都可以使用“共享”模組中的內(nèi)容。
所以事情是這樣的...
「文章」模組具有 Article
實(shí)體,與 User
實(shí)體相關(guān)。從 DDD 的角度來(lái)看,它是特定文章的創(chuàng)建者。將會(huì)有更多類似的模組與 User
實(shí)體作為資源的作者或擁有者相關(guān)。
應(yīng)該如何實(shí)作?是否應(yīng)該將其移至“共享”?不幸的是,找不到任何特定的資源。 Github 主要包含具有單一聚合的項(xiàng)目,並且沒(méi)有諸如 User
實(shí)體之類的項(xiàng)目。
我一直在尋找解決此類問(wèn)題的不同方法。你可以創(chuàng)建一個(gè)共享聚合,沒(méi)有人可以說(shuō)這是錯(cuò)誤的。但是,我認(rèn)為最好的解決方案是您建立Person (或People)聚合,其中您可以有一個(gè)與ArticleEntity 相關(guān)的PersonEntity (或AuthorEntity),聚合之間的關(guān)係沒(méi)有問(wèn)題,但我建議您嘗試僅在聚合之間建立關(guān)係根。
這是 Eric Evans 藍(lán)皮書(shū)的樣本
請(qǐng)注意,Voyage 是 Aggregate Voyage 中的 AggregateRoot,它與 Location 聚合的 AggregateRoot Location 存在關(guān)係。