DDD: 'страна' должна быть Объектом Значения или Объектом?

Если это - просто HTML, все, что необходимо сделать, изменить расширение .doc, и слово откроет его, как будто это - документ слова. Однако, если существуют изображения для включения или JavaScript для выполнения, это может стать немного более сложным.

9
задан UpTheCreek 2 September 2009 в 17:06
поделиться

3 ответа

Если ваш домен географический или политический, это может быть объект, но в среднем страна - это просто значение, связанное с такими вещами, как адреса. В этом случае в контексте вашей объектной модели это просто значение.

Что касается хранилища, то модели предметной области на самом деле все равно. Вы можете использовать базу данных, если это удобно, XML, если хотите, и класс, если у вас есть поведение, связанное со странами.

17
ответ дан 4 December 2019 в 06:57
поделиться

Одной из характеристик объекта является то, что он имеет жизненный цикл , то есть со временем меняется. Объект значения - нет. Фактически, объекты значений должны быть неизменными. Итак, вопрос, который нужно задать себе: «Меняется ли объект страны с течением времени?»

Другой аспект, который отличает сущности и объекты-значения, состоит в том, что два объекта-значения с одинаковыми свойствами являются одинаковыми . Итак, если у вас есть экземпляр страны с названием "Франция", это s то же самое , что и другой экземпляр страны с именем «Франция», хотя они являются двумя разными экземплярами (при условии, что это единственное свойство страны для целей данного обсуждения). Подумайте о строках в большинстве языков: строка «fubar» равна другому экземпляру строки «fubar».

С другой стороны, сущности различны, даже если они имеют одинаковые свойства. Один клиент с именем «Джон Смит» может не совпадать с другим клиентом с именем «Джон Смит».

Итак, учитывая эти характеристики, вы должны иметь возможность принять решение. Поскольку может быть только одна «Франция», и она не меняется со временем, вероятно, это объект значения - если вашему приложению не требуется больше отслеживать страну, которая может измениться с течением времени.

хотя это два разных случая (при условии, что это единственное свойство страны, в рамках данного обсуждения). Подумайте о строках в большинстве языков: строка «fubar» равна другому экземпляру строки «fubar».

С другой стороны, сущности различны, даже если они имеют одинаковые свойства. Один клиент с именем «Джон Смит» может не совпадать с другим клиентом с именем «Джон Смит».

Итак, учитывая эти характеристики, вы должны иметь возможность принять решение. Поскольку может быть только одна «Франция», и она не меняется с течением времени, вероятно, это объект значения - если вашему приложению не требуется больше отслеживать страну, которая может измениться со временем.

хотя это два разных случая (при условии, что это единственное свойство страны, в рамках данного обсуждения). Подумайте о строках в большинстве языков: строка «fubar» равна другому экземпляру строки «fubar».

С другой стороны, сущности различны, даже если они имеют одинаковые свойства. Один клиент с именем «Джон Смит» может не совпадать с другим клиентом с именем «Джон Смит».

Итак, учитывая эти характеристики, вы должны иметь возможность принять решение. Поскольку может быть только одна «Франция», и она не меняется с течением времени, вероятно, это объект значения - если вашему приложению не требуется больше отслеживать страну, которая может измениться со временем.

Подумайте о строках в большинстве языков: строка «fubar» равна другому экземпляру строки «fubar».

С другой стороны, сущности различны, даже если они имеют одинаковые свойства. Один клиент с именем «Джон Смит» может не совпадать с другим клиентом с именем «Джон Смит».

Итак, учитывая эти характеристики, вы должны иметь возможность принять решение. Поскольку может быть только одна «Франция», и она не меняется со временем, вероятно, это объект значения - если вашему приложению не требуется больше отслеживать страну, которая может измениться с течением времени.

Подумайте о строках в большинстве языков: строка «fubar» равна другому экземпляру строки «fubar».

С другой стороны, сущности различны, даже если они имеют одинаковые свойства. Один клиент с именем «Джон Смит» может не совпадать с другим клиентом с именем «Джон Смит».

Итак, учитывая эти характеристики, вы должны иметь возможность принять решение. Поскольку может быть только одна «Франция», и она не меняется со временем, вероятно, это объект значения - если вашему приложению не требуется больше отслеживать страну, которая может измениться с течением времени.

13
ответ дан 4 December 2019 в 06:57
поделиться

Представьте:

У вас есть другая сущность - Клиент.
Сущность клиента ссылается на объект Country.
У вас есть 2 экземпляра сущности с заполненными объектами Country с одинаковым значением (например, "Франция")
Вы удаляете объект страны из первого объекта (или первого объекта объекта)

  • , если хотите, чтобы страна также была удалена для второго объекта объекта
    => Страна - это объект сущности
  • , если вы хотите удалить страну только для 1-го объекта сущности
    => Страна - это объект значения
3
ответ дан 4 December 2019 в 06:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: