Насколько абстрактными должны быть модели MVC? - PullRequest
3 голосов
/ 09 декабря 2008

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

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 09 декабря 2008

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

Да.

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

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

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

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

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

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

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

0 голосов
/ 09 декабря 2008

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

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

При обсуждении инструментов ORM слишком часто (но не во всех случаях) предпочтительным сокращением будет "ROM".

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

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