Важным моментом здесь является то, что объекты-значения не имеют идентичности .
Это означает, что они могут легко разделяться между сущностями.
При этом я имею в виду - не отдельные экземпляры должны бытьподелился, но их классы, типа Address
вместо "Великобритания, Лондон-стрит", независимо от "16".Объект значения экземпляры должны никогда никогда не передаваться (опять же, потому что у них нет идентичности, и их состояние определяет их).
Так что на вашем месте - я бы сделалУбедитесь, что Address
как концепция является вездесущим для человека и для информации о платеже (они должны иметь одинаковую структуру), переместите ее в нужную папку / пространство имен, чтобы я мог видеть, что она является общей, и используйте ее для обеих сущностей.
Если они не являются вездесущими, я переименую Address
в PersonAddress
и создам второй - PayerAddress
(имя может отличаться в зависимости от вашего бизнеса, который вы моделируете).
Цитата Джеффа из предоставленной ссылки:
Нет проблем с двумя агрегатными корнями, ссылающимися на одну и ту же сущность - они просто не могут ссылаться на внутренние агрегаты другого агрегата.Это отличается для ценностных объектов, которые проще.Подумайте, как вы можете ссылаться на даты, например, «20 августа 2010 года», сколько угодно раз в ваших классах.