Насколько абстрактными должны быть модели MVC?

Я занимаюсь расширением и улучшением веб-сайта, который имеет несколько структурных проблем. Похоже, что разработчики до меня слышали о MVC, но не понимали идей абстракции или модульности. Итак, «фреймворк» MVC: а) сделан на заказ, б) сломан, в) исправлен и г) их несколько одновременно используются. Я собираюсь это исправить.

Это не первый раз, когда я перестраиваю фреймворк сайта, BTW, но это первый раз, когда мне приходилось исправлять фреймворк MVC. Однако здесь, на SO, я сталкиваюсь с некоторыми недостающими пробелами в знаниях MVC.

Во-первых, насколько тесно программисты связывают свою базу данных SQL со своими моделями. Для меня это не имеет смысла: обычно ли у программистов есть модель, заботящаяся об абстракции данных? (Для меня это немного лучше, чем помещать SQL в необработанный PHP-код.) Или существует обычно используемый уровень доступа к данным, который «делает ли SQL»? По опыту я знаю, что последнее означает, что вызывающему коду не нужно беспокоиться о том, где находятся данные, или как их получить или как их записать: API обрабатывает это.

А как насчет моделей? Предназначены ли они для повторного использования на разных страницах? Должны ли они заботиться о том, где хранятся данные? Разве им не следует больше заботиться об обработке логики между выборкой данных и показом данных (например, превращение идентификатора группы контакта в отображаемое имя)? И сохранение данных, и запись данных (например, выяснение того, как превратить значения $ _POST в сохраняемые данные)?

Может быть, модель MVC действительно будет DMVC - Data-Model-View-Controller.

Наконец, хотя это и с точки зрения PHP, насколько хорошо эти концепции переносятся на сайт JSP?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
814
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Здесь вы найдете более одного потока о том, следует ли начинать работу со схемы базы данных или с пользовательского интерфейса. Есть одно место, куда можно смотреть.

Я могу придумать гораздо больше, чем один инструмент, который берет схему и создает для вас ваш CRUD UI («строительные леса»), чем наоборот. Есть еще одно место, куда можно смотреть. (Ребенок-плакат: Ruby on Rails и его когнитивное потомство).

При обсуждении инструментов ORM слишком часто (но не всегда) предпочтительным акронимом будет «ROM».

У нас есть много инструментов, которые ободряют нас в нашей злой склонности к «Готовься, стреляй, целься». Для руководства это самая короткая линия между «Proof of Concept» и «RC1».

Я думаю, что «RFA» используется с MVC. Слишком высокий процент фреймворков MVC и сторонников того, что нет абстрагируют хранилище данных. :-( Фреймворки "автомодели" кажутся худшими нарушителями.

staticsan 09.12.2008 04:23
Ответ принят как подходящий

А как насчет моделей? Предназначены ли они для повторного использования на разных страницах?

да.

Должны ли они заботиться о том, где хранятся данные?

Нет. Им не нужно этого знать. Вся эта своего рода информация необходима для уровня сохраняемости или уровня данных.

Разве им не следует больше заботиться об обработке логики между выборкой данных и показом данных (например, превращение идентификатора группы контакта в отображаемое имя)?

Нет. Их просто беспокоит бизнес-логика. Какое-то обычное приложение, которое я обнаружил, люди делают модель тупой, просто имея атрибуты / свойства и ничего больше. Типичным примером в Java является POJO с геттерами / сеттерами. Мы называем их TO (объекты передачи) и используем их повсюду как хранилища данных. Я не совсем согласен с этим, ИМО, должны быть какие-то методы, связанные с бизнесом, которые подходят и соответствуют требованиям. Не делай это так глупо. Новые Entity Beans (EJB3) - хороший тому пример.

Кстати, показ данных - это работа уровня представления. В java JSP является частью технологии просмотра.

И сохранение данных, и запись данных (например, выяснение того, как превратить значения $ _POST в сохраняемые данные)?

Нет. Обычно это делается в наших контроллерах, большую часть времени используя некоторые служебные классы.

Передача объектов ... это имя, которое я искал! Я думаю, что ключевым моментом для MVC является заполнение (что угодно, кроме представления) этими объектами передачи и передача их в шаблон. Шаблон ожидает структуру TO и использует данные для создания красивого отображения. Просто как тот.

Sam 09.12.2008 06:06

Другие вопросы по теме