Під час дотримання дизайну, керованого доменом (DDD), чи правильно кореневий агрегат містити посилання на внутрішню сутність, яка має бути кореневою сутністю на окремому агрегаті?
Я вважаю, що це не правильно, головним чином через це правило про синю книгу :
Ніщо, що знаходиться поза межами АГРЕГАТИ, не може посилатися на що-небудь всередині, крім кореня ENTITY. Кореневий ENTITY може передавати посилання на внутрішні ENTITIES іншим об'єктам, але ці об'єкти можуть використовувати їх лише тимчасово, і вони не можуть утримувати посилання. Корінь може передати копію VALUE OBJECT іншому об'єкту, і це не має значення, що з ним відбувається, тому що це просто VALUE і більше не матиме жодної асоціації з AGGREGATE.
Якщо кореневий агрегат містить посилання на інший кореневий агрегат, то межа першої порушується і вся концепція агрегату пошкоджена, тому я вважаю, що якщо кореневий агрегат схожий на необхідність утримувати посилання на інший кореневий агрегат, то мені потрібно створити іншу сутність, яка, ймовірно, матиме частину тих же членів, що й інша коренева сутність, але не матиме глобальної ідентичності, як це інше правило в книзі:
Кореневі ENTITIES мають глобальну ідентичність. ЛЕГИСТРИ всередині кордону мають локальну ідентичність, унікальну лише в АГРЕГАТІ.
Я вважаю, що це був би правильний шлях, але оскільки він відчуває себе повторюваним і надлишковим (коли його знімають з контексту DDD, з чистою ООП), я прошу трохи відгуку.