2016-08-23 13 views
0

Я создаю приложение, которое имеет отчеты, и каждый отчет содержит несколько результатов. Это определенно соотношение типа композиции HAS-A между сообщением и результатом.Состав объекта. Должен ли компонент знать составной объект?

Мой вопрос: должен ли результат знать, к какому отчету он принадлежит?

Метод А (где результат не знает, какой отчет он принадлежит):

Report: 
    name 
    id 
    results[] 


Result: 
    value 
    type 
    id 

Метод B (где результат знает, какой отчет он принадлежит, но отчет не содержит результатов):

Report: 
    name 
    id 

Result: 
    value 
    type 
    id 
    report_id 
+1

Это полностью зависит от вашего домена и поэтому не может быть удовлетворено сообществом. – PeeHaa

+0

Я бы добавил, что это также зависит от типа объектной модели, о которой мы говорим, - бизнес-модели? Модель представления? Модель устойчивости? Могут ли объекты быть изменены? И т. Д. – guillaume31

ответ

0

Я думаю, что невозможно ответить на этот вопрос с информацией данного, так что вместо прямой прямой ответ, давайте посмотрим на вещи, которые могли бы повлиять на решение:

Вам нужна обратная ссылка? Очевидно, что если вам это не нужно, не создавайте его. Если вам это нужно, хотя вы все равно можете заменить его каким-то видом репозитория, например: ReportRepository.findReport(Result)

Каковы затраты на обратную связь и затраты на его отсутствие? Если вы включаете backreference, если изменения собственности (вероятно, не произойдет в вашем случае), необходимо сохранить синхронные ссылки. Если у вас нет обратной ссылки, но вам нужно ориентироваться в этом направлении, вам придется прыгать через дополнительные обручи. При сохранении двунаправленных отношений вещи, подобные JPA-сопоставлениям, становятся намного более сложными. То же самое можно применить, когда вам нужно каким-то образом сериализовать результаты.

Возможно, вам стоит посмотреть на Aggregate pattern from DDD, хотя он, похоже, не применяется в вашем случае.

+0

Вы правы в необходимости синхронизации между ссылками, когда ассоциация является двунаправленной, но это не похоже на пример OP. – guillaume31

+0

@ guillaume31 Вот почему я написал «вероятно, не произойдет в вашем случае» –

+0

Но, похоже, вы говорили о низкой вероятности изменения собственности, а не о низкой вероятности наличия двунаправленных отношений ... – guillaume31

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

  • Нет связанных вопросов^_^