2009-04-03 2 views
1

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

ответ

1

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

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

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

+0

Это была моя склонность – zsharp

1

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

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

Смежные вопросы