|
1 / 1 / 0
Регистрация: 24.10.2012
Сообщений: 63
|
|
MVC - проверить схему21.02.2014, 13:35. Показов 1487. Ответов 12
Метки нет (Все метки)
Привет
![]() Сегодня пытаясь понять шаблон проектирования MVC попытался сделать схему данного шаблона и буду его описывать как он работает. Пожалуйста можете подсказать что правильно и что неправильно описано и сделано ![]() 1. Пользователь (Спанч Боб) открывает сайт например www.primer.ru 2. Запрос Спанч Боба приходит в контроллер (контроллер управляет всеми запросами пользователя) для дальнейшего распределения 3. После контроллер передает запрос в модель для обработки запроса Спанч Боба например, получить из баз данных некоторую информацию 4. После модель полученные данные передает обратно контроллеру а тот передает эти данные в представлении для упаковывания запроса и передачи его пользователю 5. Представление опять же передает контроллеру а тот его отправляет пользователю Пожалуйста подскажите что правильно или всё ошибочно и если есть время то опишите пожалуйста доступным языком паттерн проектирования MVC
0
|
|
| 21.02.2014, 13:35 | |
|
Ответы с готовыми решениями:
12
Проверить, не противоречит ли решение логике MVC Проверить переданное get значение (MVC) Проверить блок-схему. |
|
268 / 268 / 109
Регистрация: 22.08.2013
Сообщений: 907
|
|
| 21.02.2014, 14:56 | |
|
fwefwe, есть еще фронт-контроллер, который разбирает запрос пользователя и загружает нужный контролер и действие.
Добавлено через 50 секунд Я имел ввиду — запускает действие (метод).
0
|
|
|
1 / 1 / 0
Регистрация: 24.10.2012
Сообщений: 63
|
|
| 21.02.2014, 15:11 [ТС] | |
|
Razip, тогда будет два контроллера (бэкэнд и фронтэнд) и один модель и одно представление? или любое количество моделей и представлений?
0
|
|
|
268 / 268 / 109
Регистрация: 22.08.2013
Сообщений: 907
|
|
| 21.02.2014, 15:49 | |
|
fwefwe, фронт-контроллер выбирает нужный контроллер, этот контроллер работает с любым количеством моделей и представляет нужные данные в одном представлении.
0
|
|
|
1 / 1 / 0
Регистрация: 24.10.2012
Сообщений: 63
|
|
| 21.02.2014, 15:59 [ТС] | |
|
тогда как понимаю должен быть только один фронт контроллер а тот выбирает соответствующие контроллеры из множества контроллеров а тот взаимодействует с любым количеством моделей и должно быть только одно представление?
0
|
|
|
268 / 268 / 109
Регистрация: 22.08.2013
Сообщений: 907
|
|
| 21.02.2014, 19:30 | |
|
fwefwe, по идеи да. Но опять же, есть множество реализаций, и где-то чем-то они отличаются. Это наиболее популярная.
0
|
|
|
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
|
|
| 22.02.2014, 11:28 | |
|
На схеме не хватает связи вид => модель.
Вид может (и должен) запрашивать данные модели.
0
|
|
|
1 / 1 / 0
Регистрация: 24.10.2012
Сообщений: 63
|
|
| 22.02.2014, 11:39 [ТС] | |
|
спасибо за ответ
0
|
|
|
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
|
||
| 22.02.2014, 19:56 | ||
|
0
|
||
|
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
|
|
| 22.02.2014, 22:57 | |
|
0
|
|
|
16 / 16 / 10
Регистрация: 24.01.2014
Сообщений: 187
|
||||||
| 12.03.2014, 18:46 | ||||||
|
А как можно избавиться от такого в виде?
0
|
||||||
|
16 / 16 / 6
Регистрация: 14.11.2013
Сообщений: 86
|
|
| 14.03.2014, 01:57 | |
|
Кликните здесь для просмотра всего текста
Модель — содержит бизнес-логику приложения и включает методы выборки (это могут быть методы ORM), обработки (например, правила валидации) и предоставления конкретных данных, что зачастую делает ее очень толстой, что вполне нормально.
Модель не должна напрямую взаимодействовать с пользователем. Все переменные, относящиеся к запросу пользователя должны обрабатываться в контроллере. Модель не должна генерировать HTML или другой код отображения, который может изменяться в зависимости от нужд пользователя. Такой код должен обрабатываться в видах. Одна и та же модель, например: модель аутентификации пользователей может использоваться как в пользовательской, так и в административной части приложения. В таком случае можно вынести общий код в отдельный класс и наследоваться от него, определяя в наследниках специфичные для подприложений методы. Вид — используется для задания внешнего отображения данных, полученных из контроллера и модели. Виды cодержат HTML-разметку и небольшие вставки PHP-кода для обхода, форматирования и отображения данных. Не должны напрямую обращаться к базе данных. Этим должны заниматься модели. Не должны работать с данными, полученными из запроса пользователя. Эту задачу должен выполнять контроллер. Может напрямую обращаться к свойствам и методам контроллера или моделей, для получения готовых к выводу данных. Виды обычно разделяют на общий шаблон, содержащий разметку, общую для всех страниц (например, шапку и подвал) и части шаблона, которые используют для отображения данных выводимых из модели или отображения форм ввода данных. Контроллер — связующее звено, соединяющее модели, виды и другие компоненты в рабочее приложение. Контроллер отвечает за обработку запросов пользователя. Контроллер не должен содержать SQL-запросов. Их лучше держать в моделях. Контроллер не должен содержать HTML и другой разметки. Её стоит выносить в виды. В хорошо спроектированном MVC-приложении контроллеры обычно очень тонкие и содержат только несколько десятков строк кода. Чего, не скажешь о Stupid Fat Controllers (SFC) в CMS Joomla. Логика контроллера довольно типична и большая ее часть выносится в базовые классы. Модели, наоборот, очень толстые и содержат большую часть кода, связанную с обработкой данных, т.к. структура данных и бизнес-логика, содержащаяся в них, обычно довольно специфична для конкретного приложения.
0
|
|
| 14.03.2014, 01:57 | |
|
Помогаю со студенческими работами здесь
13
Проверить Блок-схему прошу схему проверить Проверить блок-схему Проверить схему в workbench Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|