@neronru

Как правильно организовать связь модель-модель в MVC?

В общем, предположим, что значение свойства одной модели зависит от значения свойства другой. В качестве примера можно рассмотреть следующий код на GO, но в принципе разницы в языке программирования нет.
type A struct {
 Id uint64
 Param1 uint
}
type B struct {
Id uint64
IdA uint64
Param2 uint
}
func (b *B) SetParam2(a A) {
b.Param2 =  3*a.Param1
}

В общем, интересует вопрос является ли такой код правильным с точки зрения паттерна MVC?
И получается инициализацию структуры A для дальнейшего использования в B надо производить в контроллере? Или это можно делать в модели B?
  • Вопрос задан
  • 286 просмотров
Решения вопроса 1
bitver
@bitver
Контроллер обеспечивает передачу внешних данных в модель. Если инициализация структуры А требует передачи ей внешних данных, то можно это сделать и в контроллере, но, думаю, это совершенно не критично где будет происходить инициализация.

Я б сделал не SetParam2, а
type B struct {
  A
  Id uint64
  IdA uint64
  //Param2 uint 
}

func (b B) Param2() uint {
  return A.Param1 * 3;
}
но это, конечно, зависит от задачи.

Для полной ясности проще всего (в смысле не задумываясь над тем как надо) можно создать 3ю структуру С, которая работает с моделями А и B. Инициализация С в контроллере, инициализация А и B в модели С.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
taliban
@taliban
php программист
В таких случаях вводят третью сущность и называют ее по разному (сервис, библиотека, итд) и она уже осуществляет взаимодействие между моделями. Вообще в идеале круто когда модели самодостаточны, и не зависят ни от кого. Это по сути набор данных с минимальной логикой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы