DDD, как вы меняете ValueObject? - PullRequest
       66

DDD, как вы меняете ValueObject?

0 голосов
/ 20 ноября 2018

Вопрос относится к ситуации, в которой необходимо обновить / удалить объект значения.

Рассмотрим эту ситуацию.

У вас есть заказ, и у вас есть продукты, а продукты имеют ProductItems.Где ProductItem является ValueObject.Если бы вам пришлось обновить список productItems в Product (скажем, обновить количество), как бы вы это сделали?Как вы определите точный ProductItem, который требует обновления?

Это с точки зрения перспективы или OrderingContext, должен существовать вспомогательный контекст, в котором у вас есть акции ProductItem и цены ProductItem (InventoryContext), контекст, где ProductItem - это больше, чем просто ValueObject, но, поскольку мы находимся подOrderingContext, как бы вы обновили ProductItem, если у вас нет способа его идентифицировать?

1 Ответ

0 голосов
/ 20 ноября 2018

Вы идентифицируете Value object в списке любыми нужными вам способами, в этом отношении нет правила .

Например, в этом случае, один из способов определить это - использовать его числовой индекс из списка.Если вам нужно что-то более стабильное (то есть это работает и в случае переупорядочения элементов), вы можете использовать GUID вместо числовых индексов на языках, которые поддерживают это.Например, PHP позволяет вам использовать strings для доступа к массиву, а GUIDs можно преобразовать в strings перед использованием при поиске в массиве.

Важное правило, которое следует помнить о Value objects: онидолжен быть неизменным, то есть, если вам нужно обновить один, то вы замените его на другой экземпляр.

...