Вы столкнетесь с некоторыми аргументами о наилучшем способе сделать это, но в конце дня у вас есть два варианта.Либо вы можете заставить модель извлекать необходимую информацию из другой модели, либо вы можете заставить контроллер передавать необходимую информацию.
Исходя из того, что я прочитал, пока у модели нет логики контроллера или логики просмотра, вы хороши, поэтому нет ничего плохого в том, чтобы модель знала о других моделях.Тем не менее, другие утверждают, что наличие у контроллера возможности передавать необходимую информацию делает код немного проще для документирования, так как вы можете видеть, что модель требует информацию откуда-то еще.Однако в конце дня я вижу, что оба действительны, и тот, который вы выберете для использования, скорее всего, будет зависеть от личных предпочтений.
Дизайн - данные контроллера предоставляются
ModelOne
- Пользователь GetCurrentUser ()
ModelTwo
Фрагмент - данные контроллера предоставляются
Controller {
function doWork() {
User user = ModelOne.GetCurrentUser();
Items[] items = ModelTwo.GetItems(user);
}
}
Дизайн - модель получает данные
ModelOne
- Пользователь GetCurrentUser ()
ModelTwo
Фрагмент - модель получает данные
ModelTwo {
Items[] GetItems() {
User user = ModelOne.GetCurrentUser();
...
}
}
Controller {
function doWork() {
Items[] items = ModelTwo.GetItems();
}
}