2012-02-22 6 views
0

У меня есть StudentDriver как совокупный корень. Каждый StudentDriver может иметь несколько DrivingLogs, и каждый DrivingLog может содержать несколько DrivingRecords.Как вложить объекты в DDD

Поскольку они связаны друг с другом, я думаю, что это правильно. Однако я не понимаю, как, например, я собираюсь добавить новую дорожную запись. Я вызываю studentdriver.addNewDrivingRecordToDrivingLog (...) или я сначала получаю вождение от пользователя, а затем добавляю к нему дорожную запись. Я имею в виду, что имена методов становятся очень длинными, и я не понимаю, как вы должны обращаться к элементам.

Не могли бы вы объяснить, как вы должны взаимодействовать с членами StudentDriver, и даже если этот агрегат правильный?

ответ

1

ли я вызвать studentdriver.addNewDrivingRecordToDrivingLog (...) или я сначала получить drivinglog от пользователя, а затем добавить drivingrecord к этому. Я имею в виду, что имена методов становятся очень длинными, и я не понимаю, как вы должны обращаться к элементам.

Похоже, что получение экземпляра DrivingLog и добавление к нему записи было бы лучше, но на самом деле это похоже на то, что вам нужно выяснить самостоятельно, потому что мы недостаточно знаем о вашем домене. Оба подхода не нарушают никаких правил DDD. Попробуйте один и измените его позже, если вам это не нравится (т. Е. Запах кода, тесты жесткие и т. Д.). Код DDD должен постоянно улучшаться вместе с вашим пониманием домена. В этой ситуации нет правильного или неправильного положения.

+0

Итак, нет ничего плохого в том, что вы получаете entites и т. Д. Внутри совокупного корня, если другие корни их не имеют? Вроде, не так ли плотно слагать entites за пределами совокупного корня? – LuckyLuke

+0

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

+0

И последнее: когда вы, например, добавляете вождение к ученику, вам нужно обновить studentdriver в правом хранилище? У вас нет собственных репозиториев для entites в агрегатах? Итак, каждый раз, когда что-то в совокупности изменяется студента, вы должны «обновлять» ученика? – LuckyLuke

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