2010-12-12 2 views
1

Может ли сущность внутри агрегата, которая не является root, может содержать ссылку на корневой агрегат. Или корневой агрегат может содержать только ссылки на дочерние объекты.Задача задания базового агрегата

ответ

6

Сущность в совокупности может содержать ссылку на общий корень.

Субъекты в совокупности могут также содержать ссылки на другие внешние корни совокупности.

Внешние объекты НЕ могут содержать ссылку на объект, который является внутренним для совокупности. Внешние объекты должны ссылаться только на совокупный корень, никаких внутренних объектов.

Только агенты должны быть возвращены из запросов/хранилищ.

Агрегат должен быть создан как целый набор, как правило, с использованием фабрики.

+0

Могу ли я создать агрегат с помощью IOC, я имею в виду, где я могу использовать IOC в ddd. Чтобы создать объекты на сервисном уровне вместо фабрики. – kamal

+0

Сложный вопрос. Службы являются источником активности в приложениях и поэтому часто являются источником действий, которые в конечном итоге приводят к созданию объекта. Вы должны отличить запрос от механики и ответственность за создание объектов, т. Е. Собственно сам строительный код. Ничто не является более интимным или подробным, чем знание создания объекта домена, и это часть модели домена. Таким образом, хотя услуги могут требовать создания объекта, на самом деле создание кода создания на уровне сервиса вызывает утечку знаний в уровне домена и создание очень плотно связанного уровня обслуживания. – Sisyphus

+0

Можете ли вы пояснить, что вы подразумеваете под «Внешними объектами», если ViewModel в парадигме MVVM будет считаться «внешним объектом» или вы более конкретно ссылаетесь на объекты в пределах уровня домена? – jpierson