Направление движения ассоциаций - PullRequest
3 голосов
/ 21 марта 2012

Я читаю книгу о Домен-управляемый дизайн из Эрик Эванс - Глава 5 , касающаяся ассоциаций .Одним из его советов по уменьшению сложности модели является навязывание ассоциативным направлениям.

Я цитирую:

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

Как выбрать направление обхода для ассоциации?Как правило, когда существует связь между двумя элементами, она может быть прочитана и понята в двух направлениях.Что может заставить нас выбрать одно направление над другим?

Спасибо

Ответы [ 2 ]

5 голосов
/ 21 марта 2012

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

Полагаю, Эванс просто предлагает, чтобы вы добавляли направление обхода только тогда, когда вам это нужно, и будете использовать его в коде сразу после этого, в отличие от преждевременного добавления направления обхода "на случай, если оно понадобится нам позже".

4 голосов
/ 21 марта 2012

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

Во время проектирования вы можете указать, что можно нарушить двунаправленность на уровне реализации и облегчить кодирование системы

...