簡體   English   中英

對於PHP中的DDD,我們如何在不是根的聚合中完全保護實體上的方法?

[英]For DDD in PHP, how do we exactly protect methods on an entity in an aggregate that is not the root?

對於PHP中的DDD,我們如何在不是根的聚合中完全保護實體上的方法? 我們如何保護它們避免在聚合外部使用(因為僅應使用聚合根上的方法)?

獎勵:而且,重復實體是否正常? 我的意思是,在哪里說一個相同的產品實體類在兩個單獨的集合中被發現是子代? 這兩個產品類別在使用“產品”的域概念時具有相同的行為/規則。 但是我重復了該類,因為同樣,不應在其聚合之外訪問實體。

您不會公開那些實體,基本上您的AR不能返回它的實例。 但實際上,我並沒有這個問題,主要是因為我的匯總是由1個實體+一堆價值對象構成的,占99%。

獎勵:您的匯總定義概念。 實體和值對象只是具有業務意義的對象的技術術語,因此它們是概念的實現。 產品的概念在每個受限制的上下文中應該是唯一的。

當另一個概念以某種方式引用(並不意味着它包含)產品時,它實際上處理的是產品ID,這又是技術實施的更多細節。 從業務角度來看,每個上下文都有一個獨特的概念(匯總)。

由於聚合應包含定義概念的對象,因此在聚合內部“使用”重復的實體表示不正確建模的99.99%。

集合不僅是一組實體,其中一個實體充當其他實體的容器。 那是100%的錯誤。 聚集包括正確定義業務概念所需的所有對象。 聚合根絕不是容器,它是維護聚合一致性的對象(這就是為什么您只能使用它的原因)。

對於抱着孩子的父母,有數據庫和存儲庫模式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM