Я постараюсь ответить как на ваш общий вопрос об объектах-значениях, так и на более конкретный из ваших комментариев?
- Могут ли домены совместно использовать объекты-ценности?
Это зависит. В системе, над которой я сейчас работаю, у нас есть около 15 крупных сервисов, мы разделяем типы значений, такие как «EMailAddress», «PhoneNumber», «Money» и т. Д. Эти типы четко определены, и у нас нет проблем с совместным использованием, но я не будет делиться вещами только потому, что они могут использоваться где-то еще, смакуйте ваши общие типы значений для тех, которые фактически используются. При обмене вы платите цену общесистемной связи.
- Могу ли я раскрыть отношения между заказчиком и заказом как объект стоимости, заключающий в себе ключ?
Нет. Я бы не стал, как отмечали другие, Клиент - это то, о чем кто-то, кто работает в домене заказов, знал бы и запрашивал данные. Если вы утверждаете, что «Клиент» и «Заказ» представляют два разных домена, чем я предполагаю, что домен «Клиент» является чем-то вроде CRM-данных? Если вы моделируете «Заказчик» и «Заказ» отдельно, то домен «Заказчик» не может содержать данные, которые требуются в вашем домене «Заказ», например, адрес для выставления счета. Я понимаю ваше возражение против жесткой связи и огромных графов объектов, но вы можете справиться с этим, убедившись, что в вашей системе разрешено использование нескольких «клиентов»; каждый «Клиент» представляет свой собственный набор данных и поведения в ограниченном контексте. Например, у вас может быть как сущность Customer в вашем CRM-домене, так и сущность Customer в вашем «Order» -домене (я предполагаю, что это действительно Ordering-домен, потому что «Order» звучит как сущность, а не инкапсулированный набор бизнесов). процессы). В вашем CRM-домене у клиента могут быть такие вещи, как: номера телефонов, контактные лица, почтовые адреса и т. Д.), В домене «Заказ» у вашего клиента, безусловно, будут заказы, и такие вещи, как платежный адрес и т. Д. Итак, подведем итог. : не создавайте клиента, у которого есть все, поместите его в свой собственный домен и удалите отношение к заказам, вы только уменьшаете размер графа вашего объекта.