التعامل مع المجاميع المتداخلة في DDD
-
18-09-2019 - |
سؤال
أنا فقط بدأت في DDD، وأواجه بعض المشاكل في معرفة كيفية استيعاب الطبيعة العلائقية لبياناتي. لدي ما أعتقد أنه سيعتبر جذري التجمع، لكن التجميع لديه أيضا مجموعه. لا ترغب في انتهاك قانون ديميتر، وأنا أتساءل عما إذا كنت أفكر في هذا الخطأ وآمل أن تقدم بعض خبير DDD بعض البصيرة.
جذر التجمع الخاص بي هو بلدي Account
كائن، الذي لديه إجمالي العديد من AccountElement
الكيانات، والتي هي أنفسهم التجمعات المنطقية للفرد ProductComponent
جهات.
أ AccountElement
خارج سياق Account
ليس له معنى، لذلك أنا مرتاح مع استنتاجي أن Account
الكائن هو جذر إجماليي، وأتوقع هذا الكيان الذي يمتلك إجمالي Elements
خاصية. انها ال ProductComponent
جمع لي في حيرة من أمري. هذا المجموع ليس له معنى خارج AccountElement
, ، و حقا ليس له معنى خارج Account
.
لا أعتقد أنني يجب أن أكون الوصول إلى الفرد ProductComponent
الكائنات عن طريق التنقيط في طريقي إليها، مثل:
var reference = account.Elements(0).ProductComponents(0).ReferenceCode;
ولكن في الوقت نفسه لا معنى له (من منظور المجال) الوصول إلى ProductComponent
مباشرة من Account
شخصية.
أنا متأكد من أن هذا أمر صعب للغاية فهمه دون معرفة من نطاقي، لكنني آمل أن يكفي الحصول على بعض الملاحظات الجيدة.
المحلول
المادة روبرت مرتبطة أنها جيدة. أود أن أضيف أنه إذا كان ProductComgonent موجودا فقط في سياق المساءلة والمحاسم الموجودة فقط في سياق الحساب، فمن تلقي ProductComponent في سياق الحساب.