Разбить сущности на более мелкие сущности в DDD? - PullRequest
1 голос
/ 03 апреля 2009

Имеет ли смысл создавать подмножества сущностей, если вы рассматриваете их использование в приложении по-другому? IE. Я беру свою сущность и определяю новую сущность только с некоторыми атрибутами первой. Теперь у меня есть 2 сущности, которые пересекаются, но используются по-разному, но в конечном итоге сохраняются в одной и той же таблице данных. Эти сущности будут доступны через различные репозитории ...

Ответы [ 2 ]

2 голосов
/ 03 апреля 2009

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

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

Если два класса являются частью отдельных поддоменов, они, вероятно, должны быть разделены. Мои мысли основаны на частях примера, который я помню, услышав в интервью Роба Коннери о Hanselminutes . Продукт имеет несколько свойств, которые важны для потребителей (цены, описание и т. Д.), И несколько свойств, которые важны для персонала склада (местоположение на складе, вес, размеры и т. Д.). Для меня в этом эпизоде ​​подразумевалось, что два продукта должны быть определены отдельно в домене, а не определяться один раз и совместно использоваться.

1 голос
/ 03 апреля 2009

Если под «использованием в приложении» вы имеете в виду, что вы будете отображать разные детали в разных видах, я бы посоветовал вам использовать шаблон презентации, описанный Фаулером в его Модель презентации (или, если ваш При разработке приложения WPF вы можете использовать более специализированную версию WPF под названием Model-View-ViewModel (MVVM) ).

Но если вы под "использованием" подразумеваете, что вы будете использовать разные атрибуты сущности в разных поддоменах или части вашего домена, то я согласен с Крисом; Возможно, вам лучше разбить их на разные сущности. Причина в том, что в модели вашего домена вы должны отразить, как объект используется в этом конкретном (суб) домене. И если вы используете разные части сущности при разных обстоятельствах, они, вероятно, имеют разные значения в этих настройках, что снова должно отражаться в именовании сущностей. И если бы это был я, я бы, вероятно, сделал один репозиторий для каждой из сущностей. Насколько я знаю, в большинстве случаев имеет смысл сопоставление 1: 1 между сущностями и репозиториями. Но затем снова; точно так же как Крис, Роб Конери и 90% разработчиков, пытающихся сделать DDD; Я довольно новичок в DDD-игре, и поэтому мой опыт может быть отменен кем-то более опытным:)

...