2010-08-12 5 views
2

Я немного запутался в отношении отношения модели к контроллеру в MVC.MVC: Связь между контроллером и моделью

Должен ли контроллер иметь доступ к модели в системе или должен иметь отношение 1: 1 к определенной модели? Оба варианта, похоже, представляют проблемы:

Если соотношение 1: 1, очевидно, если что-то в другом месте необходимо обновить, оно не может, например, обновить заголовок окна из-за границы триады окна. Так что, если модели имеют доступ к другим моделям (и как они их найдут?)

Если это не 1: 1, а контроллер может получить доступ к любой модели, как они обычно доступны (локатор сервисов?), И что, если это необходимо быть более чем одним экземпляром конкретной модели.

Я немного смущен! Спасибо за любую помощь.

+0

Существует, конечно, много способов программирования, но если вы используете один для многих, вы можете использовать шаблон хранилища. Ознакомьтесь с учебником NerdDinner для получения дополнительной информации об этом шаблоне. http://nerddinnerbook.s3.amazonaws.com/Intro.htm –

ответ

3

Для базовых умений CRUD я думаю, что соотношение 1: 1 работает, но это ни в коем случае не правило, что каждый контроллер должен иметь соответствующую модель. При этом я, очевидно, не думаю, что проблема заключается в доступе к нескольким моделям внутри контроллеров.

Единственное, что имеет отношение 1: 1 в моих приложениях MVC - это модели и таблицы.

0

Обычно я не обращаюсь к модели напрямую с контроллера. Обычно я добавляю еще один слой между моделью и контроллерами. Например: Контроллер Слой-> Сервис Слой-> Модель Layer

Для каждого класса модели, я создаю класс обслуживания для доступа к нему и контроллеры могут получить доступ каждые услуги в приложении. Я думаю, что это хороший способ сделать что-то. Если вам нужны некоторые примеры, пожалуйста, спросите. :)

1

Парадигма MVC основана на одном основном правиле, а именно Разделение проблем. Создание контроллера 1: 1, зависящего от какого-то отношения с моделью, не отделяет эти проблемы, а делает их более унифицированными. Контроллер под названием «пользователи» должен разговаривать только с моделью пользователями, но зачем идти и делать это явным отношением?

Модели должны почти всегда существовать в эксклюзивном статическом контексте, поэтому их легко получить в контроллерах и других моделях.

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