Значение объекта или сущности - PullRequest
0 голосов
/ 24 января 2011

В моем проекте есть две вещи: Advertiser и BonusPrograms.

Бизнес-правила: -

  1. Рекламодатели выберут бонусную программу из списка бонусных программ.

  2. Одновременно может быть назначена только одна бонусная программа, предыдущая бонусная программа будет отклонена для этого Рекламодателя.

  3. Бонусные программы не создаются Рекламодателем,только назначенные им.

  4. Бонусные программы не создаются для рекламодателя, это для всех рекламодателей

  5. Любая новая бонусная программа может быть введена в любое времяв проекте

Мой вопрос: -

1) Я создал бонусную программу в качестве отдельного корня agg против корневого агрегата рекламодателя, потому что рекламодатель его не создает, онтолько назначает это.Правильно ли я?

ИЛИ

2) Я делаю BonusPrograms в качестве объекта-значения в Агрегат рекламодателя, потому что рекламодателю назначается только одна бонус-программа, когда новая назначается, предыдущая удаляется?

Ответы [ 2 ]

1 голос
/ 24 января 2011

Я бы выбрал вариант 3), который заключается в том, что BonusProgram является сущностью, а не совокупным корнем. Трудно сказать, зная больше о вашем домене, но из того, что вы описали здесь, реклама (или маркетинг, или что-то подобное) - это совокупность, а рекламодатели и бонусные программы - это субъекты в этой совокупности. Не уверен, какой будет корень для совокупности из того, что вы сказали, но для меня это не похоже ни на рекламодателей, ни на бонусные программы.

0 голосов
/ 30 января 2011

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

Вы задаете здесь два вопроса, и в каждом из них есть две общие липкие концепции.

Первый вопрос - это вопрос о том, куда направляется BonusProgram по отношению к Рекламодателю, если Рекламодатель является совокупным корнем. Это, безусловно, интересный вопрос, который зависит от вашего домена и вариантов использования. Это не зависит от того, является ли BP ценным объектом или сущностью, поскольку агрегаты обычно содержат оба. Задача агрегата состоит в том, чтобы упростить обход объектов для внешних (до корневого агрегата) объектов. Это достигается путем выбора одного корневого объекта, на который может ссылаться внешний объект, и только одного (для варианта использования). Это означает, что клиентский объект может иметь ссылку на Advertiser, но не BonusProgram. Рекламодатель будет хранить необходимые ссылки на БП, чтобы удовлетворить запрос объекта клиники.

Второй вопрос заключается в том, является ли BP объектом стоимости или сущностью. Опять же, ответ зависит от вашего домена. Вопрос, который нужно всегда задавать себе, заключается в том, заботитесь ли вы об идентичности объектов или нет. Если вам все равно, это объект стоимости; если вам все равно, это сущность. Классический случай объекта стоимости - Деньги - хотя вы, безусловно, заботитесь о нем, вам, как правило, не важно, какой доллар какой (один доллар так же прекрасен, как и другой)! В этом случае BonusProgram пахнет больше как сущность, и вам, вероятно, интересно узнать, например, какой BP действовал в прошлом месяце и каковы его результаты по сравнению с BP этого месяца.

Опять Павел говорит то же самое, и вы должны принять его ответ.

НТН,
Berryl

...