Как спроектировать интерфейс для Модели в Model-View-Controller? - PullRequest
2 голосов
/ 10 октября 2011

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

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

Спасибо

Ответы [ 3 ]

2 голосов
/ 10 октября 2011

Здесь может быть полезна концепция «ViewModel» - ее также называют Филом Хааком «Просмотреть конкретную модель» в книге « Professional ASP.NET MVC3 ».

Многие автоинструменты или генераторы «скаффолдинга» стремятся создать одну страницу / интерфейс, но ничто не мешает вам сделать многоступенчатый процесс для большой модели.

Один из вариантов - создать представлениеМодели для каждой стадии процесса (т. Е. BigProcessPartAViewModel, BigProcessPartBViewModel и т. Д.), А затем генерируют контроллер, который обрабатывает каждый из них с отдельными представлениями.Очевидно, что вам нужно управлять состоянием на нескольких этапах, возможно, с помощью базы данных или сеанса.

Кроме того, ваша модель - это ваша модель ... это НЕ доступ к данным.Поэтому вам может понадобиться дополнительная модель, которая обрабатывает состояние в процессе, а также дизайн доступа к данным, который допускает многофазную транзакцию.

1 голос
/ 10 октября 2011

Разделение интерфейса - это один из SOLID , который поддерживает 5 основных принципов объектно-ориентированного программирования и проектирования.Это говорит о том, что если ваш интерфейс становится слишком «толстым», его нужно разделить на более мелкие и более специфичные интерфейсы.Подробнее на Разделительная страница интерфейса wiki

1 голос
/ 10 октября 2011

Ничто не говорит о том, что ваша Модель должна быть отдельным классом или сущностью.

Например, в Spring MVC модель представляет собой Map, который вы создаете в Контроллере с ключами и значениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...