Я использую C ++ (с библиотекой Qt), чтобы сделать простое приложение, смоделированное в домене. Я пишу свои собственные классы отображения O / R. Поскольку это приложение будет расти в будущем, я стараюсь поддерживать чистую кодовую базу с четко разделенными слоями.
Проблема, с которой я сталкиваюсь, заключается в том, когда и где загружать совокупные корни, на которые ссылается объект в другом модуле. (Я использую здесь слово «модуль» Эрика Эванса из книги DDD.)
В настоящее время у меня есть простой объект с именем Client
, который находится в модуле ClientModule
. В PermitModule
у меня есть Permit
объект. ( реальность более сложна, но для краткости я буду придерживаться этих двух объектов, поскольку они являются совокупными корнями ). Объект Permit
имеет ссылку на Client
как applicant
. Это модель моего домена.
снизу вверх, у меня есть слой инфраструктуры , который содержит классы отображения O / R и конкретные реализации Repository
объектов. Таким образом, у меня есть классы ClientMapper
, ClientRepositoryDb
, PermitMapper
и PermitRepositoryDb
.
Следующим является Уровень домена , который содержит модель домена (Client
и Permit
классы) плюс интерфейсы хранилища ClientRepository
и PermitRepository
.
Кроме того, у меня есть Application Layer , а затем Presentation Layer , но это не имеет значения в этом примере.
Мой вопрос : должны ли быть загружены отношения между Permit
и Client
в классе PermitMapper
или в классе PermitRepository
. Или есть другой способ сделать это?
Это касается не только загрузки объектов, но и их сохранения и удаления.