от
Когда выходя за рамки рад (перетащить и настроить) способ построения пользовательских интерфейсов, что многие инструменты призываем вас, скорее всего можно встретить три модели проектирования модель-представление-контроллер, Модель-Вид-телеведущая и модель-представление-модель представления. Мой вопрос состоит из трех частей к нему: А какие проблемы у этих моделей? Как они похожи? Чем они отличаются?

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

23 Ответы

0 голосов
от
Когда выходя за рамки рад (перетащить и настроить) способ построения пользовательских интерфейсов, что многие инструменты призываем вас, скорее всего можно встретить три модели проектирования модель-представление-контроллер, Модель-Вид-телеведущая и модель-представление-модель представления. Мой вопрос состоит из трех частей к нему: А какие проблемы у этих моделей? Как они похожи? Чем они отличаются?
0 голосов
от
Модель-Представление-Презентатор В MVP, ведущий содержит пользовательского интерфейса, бизнес-логики для представления. Все вызовы от просмотра делегат непосредственно ведущий. Ведущий тоже отсоединяется непосредственно из представления и разговаривает с ним через интерфейс. Это позволит насмешливые представления в модульном тесте. Один общий атрибут MVP является то, что там должно быть большое двухсторонней диспетчерской. Например, когда кто-то нажимает "сохранить" кнопку, обработчик события делегаты "метод OnSave ведущего". После завершения процедуры сохранения, затем ведущий перезвонит посмотреть через свой интерфейс так, что взгляд может показать, что сохранение завершено. МВП, как правило, очень естественный образец для достижения разделены презентации в веб-формах. Причина в том, что мнение всегда создаются сначала выполнения ASP.NET . Вы можете узнать больше об обоих вариантах. Две основные вариации Пассивный вид: вид как можно более тупым и содержит почти ноль логики. Ведущий-это средний человек, который разговаривает с видом и моделью. Вид и модель полностью экранирован от друга. Модель может создавать события, а ведущий выписывает их для обновления представления. В пассивном зрения нет прямой привязки данных, вместо просмотра предоставляет свойства сеттер которую автор использует, чтобы установить данные. Все управление состоянием на ведущего и не смотреть. Плюсы: максимальная поверхность контролепригодность; четкое разделение представления и модели Минусы: больше работы (например, все свойства легавой собаки) как вы делаете все данные связываете себя. Контроль контроллер: ведущий обрабатывает жесты пользователя. Представление связывается с моделью непосредственно через привязку данных. В данном случае это работа ведущего выдать модель для просмотра, так что он может привязаться к нему. Докладчик также будет содержать логику для жесты, такие как нажатие кнопки, навигацию и т. д. Про: использование привязки данных объем кода уменьшается. Минусы: есть другие менее проверяемые поверхности (из-за привязки данных), и есть меньше инкапсуляции в представлении, поскольку оно обращается непосредственно к модели. Модель-Представление-Контроллер В MVC, контроллер отвечает за определение представления для отображения в ответ на любые действия, в том числе, когда приложение загружает. Это отличается от MVP, где действия маршрута через представление ведущего. В MVC, каждое действие в представлении соотносится с призывом к контроллеру вместе с действием. В интернете каждое действие включает в себя призыв к URL-адрес, на другой стороне которой есть контроллер, который отвечает. Когда-то, что контроллер завершил свою работу, он будет возвращать правильное мнение. Последовательность продолжается таким образом в течении жизни применение: Действие, в представлении -> Вызов к контроллеру -> Логический Контроллер -> Контроллер возвращает представление. Одна большая разница о MVC заключается в том, что представление не напрямую привязать к модели. Вид просто делает, и абсолютно без гражданства. В реализациях MVC на вид, как правило, не имеют никакой логики в коде. Это противоречит MVP, где это абсолютно необходимо, потому что если смотреть не делегирует словам телеведущего, он никогда не будет вызван. Модель Презентация Одна другой шаблон, чтобы посмотреть на это представление модели. В этой модели нет ведущего. Вместо этого представление привязывается непосредственно к модели представления. Модель презентация модель созданный специально для просмотра. Это означает, эта модель может предоставлять свойства, что никто бы никогда не поставил на модель предметной области, поскольку это было бы нарушением разделения задач. В этом случае модель представления привязывается к модели предметной области, и может подписаться на события, поступающие от этой модели. Представление подписывается на события, поступающие от модели представления, и соответственно обновляется. Модель представления может выставить команды, которые вид использует для вызова действий. Преимущество такого подхода заключается в том, что вы можете фактически удалить кодом, совсем как в личку полностью инкапсулирует все поведение на вид. Этот шаблон является очень сильным кандидатом для использования в приложениях WPF и называют также модель-представление-модель представления. Там в статье MSDN о модели презентация и раздела в составном руководство для WPF (бывший "Призма") о разделенных моделей презентация
0 голосов
от
Это упрощение, из многочисленных вариантов этих моделей дизайна, но это, как мне нравится думать о различиях между двумя. В MVC МВП
0 голосов
от
Я писал об этом некоторое время назад, ссылаясь на отличный пост Тодда Снайдера на разнице между двумя: Здесь представлены основные различия между узоры: Паттерн MVP Смотреть больше слабосвязанной модели. Ведущий ответственные за связывание модели вид. Легче для модульного тестирования, так как взаимодействие с целью через интерфейс Как правило, целью ведущий карте один в один. Комплексе может иметь мульти ведущих. Паттерна MVC Контроллер на основе поведения и могут быть общими для всех вид Может быть ответственен за определение, какие представления для отображения Это лучшее объяснение в Интернете я смог найти.
0 голосов
от
Вот несколько иллюстраций, которые представляют поток коммуникации
0 голосов
от
MVP-это не обязательно сценарий, где вид на попечении (МВП см. Taligent к примеру). Я нахожу прискорбным, что люди до сих пор проповедует это как шаблон (вид заряда), в отличие от анти-паттерн, так как это противоречит "просто посмотреть" (прагматичный программист). "Это просто мнение" говорится, что окончательный вид для пользователя отображается на второй план приложения. Паттерн MVP корпорации Майкрософт делает повторное использование вид гораздо сложнее и удобно отговорки дизайнер Майкрософт от поощрения плохая практика. Честно говоря, я думаю, что проблема в MVC справедливо для любой реализации MVP и различия почти исключительно смысловой. Покуда вы следуете разделение между представлением (которое отображает данные), контроллер (который инициализирует и контролирует взаимодействия с пользователем) и типовые (базовые данные и/или услуги)), то достигая преимущества в MVC. Если вы не достигая преимущества то, кто действительно заботится о том, чтобы ваш шаблон проектирования MVC, MVP или надзорной контроллер? Единственная реальная картина остается как MVC, остальные просто разные вкусы она. Считаю это очень интересной статьи, которая всесторонне перечисляет ряд этих различных реализаций. Вы можете заметить, что все они по сути делали то же самое, но немного по-другому. Я лично думаю, что МВП только недавно вновь введен в качестве броского термина либо уменьшить споры между семантической ханжи, которые утверждают, что действительно MVC или Не или оправдывать Microsoft по инструменты быстрой разработки приложений. Ни одна из этих причин в моих книгах оправдать свое существование как отдельный шаблон.
0 голосов
от
МВП: вид на плату. Мнение, в большинстве случаев, создает ее ведущий. Ведущий будет взаимодействовать с моделью и манипулировать просмотреть через интерфейс. Мнение иногда будет общаться с ведущим, как правило, через какой-то интерфейс. Это сводится к выполнению; вы хотите посмотреть для вызова методов на предъявителя или вы хотите просмотреть события ведущий слушает? Он сводится к следующему: представление знает о телеведущем. Мнение делегатов ведущий. В MVC: контроллер в зарядки. Контроллер создать или открыть при каком-то событии/запрос. Затем контроллер создает соответствующее представление и взаимодействие с моделью для дальнейшей настройки посмотреть. Она сводится к: контроллер создает и управляет мнение; мнение-раб контроллера. Взгляд не знает о контроллере.
0 голосов
от
В MVC (модель-представление-контроллер) Входной сигнал направляется на контроллер во-первых, не смотреть. Этот вход может быть пользователь взаимодействует со страницей, но это также может быть из просто введя URL-адрес в браузере. В любом случае, его контроллер, который сопряжен с Начать некоторую функциональность. Есть многие-к-одному связь между контроллером и видом. Это потому, что один контроллер может выбрать разные взгляды должны быть оказаны на основе выполняемой операции. Обратите внимание на один стрелок из контроллера в вид. Это потому, что вид не имеет каких-либо знаний или ссылку на контроллер. Контроллер делает пас назад модели, поэтому есть знание между представлением и ожидаемая модель передается в него, но не контроллер обслуживает его. Звание MVP (модель-представление-презентатор) Вход начинается с представления, а не ведущий. Существует взаимнооднозначное соответствие между видом и связанных с Ведущий. Представление содержит ссылку на ведущего. Ведущий также реагирующих на события, которые инициированы из вида, так что его понимают вид он связан. Ведущий обновляет вид в зависимости от действий, которые он выполняет на модели, но вид не Модели знают. Для получения дополнительной информации
0 голосов
от
Есть много ответов на этот вопрос, но я чувствовал, что есть необходимость в какой-то очень простой ответ явно сравнивая два. Вот обсуждения я придумала, когда пользователь ищет название фильма в MVP и приложения MVC: Пользователей: Нажмите кнопку ... Смотреть: кто это? [MVP И|ИЛИ MVC] Пользователь: я просто нажал на кнопку Поиск ... Вид: ОК, Подожди секунду ... . [MVP И|ИЛИ MVC] ( Смотреть звонка диспетчеру телеведущий|... ) [MVP и|или MVC] Вид: Контроллер Эй ведущий|, пользователь просто нажал на кнопку поиска, что мне делать? [MVP И|ИЛИ MVC] Контроллер ведущий|: Эй смотреть, есть ли срок поиска на этой странице? [MVP И|ИЛИ MVC] Вид: Да,... вот это ... “фортепиано” [MVP и|или MVC] Ведущий: спасибо просмотр,... тем временем я ищу поисковый запрос по модели, пожалуйста, покажите ему/ей прогресс-бар [MVP и|или MVC] ( Контроллере ведущий|называет модель ... ) [MVP и|или MVC] Контроллер ведущий|: Модель Эй, ты хоть матч за этот срок поиска?: “фортепиано” [MVP и|или MVC] Модель: контроллер Эй ведущий|, позвольте мне проверить ... [MVP и|или MVC] ( Модель делает запрос к базе данных кино ... ) [MVP и|или MVC] ( Через некоторое время ... ) -------------- Это где и MVP и MVC начинают расходиться --------------- Модель: я нашла список для вас, ведущий, вот это в JSON “[{"имя":"преподаватель фортепиано","года":2001},{"имя":"фортепиано","год":1993}]” [МВП] Модель: есть некий результат, контроллер. Я создал поле переменной в мой экземпляр и наполнил его результат. Он называется "searchResultsList" [в MVC] (Ведущая модель|контроллер благодарность и вернется к просмотру) [MVP и|или MVC] Ведущий: Спасибо за просмотр жду, я нашел список подходящих результатов для вас и расположил их в презентабельном формате: ["преподаватель фортепиано 2001","фортепиано 1993"]. Пожалуйста, покажите его пользователю в виде вертикального списка. Также, пожалуйста, скрыть прогресс-бар теперь [ПДТ] Регулятор: Спасибо за просмотр жду, я попросил модель о вашем поисковом запросе. Он говорит, что он нашел список подходящих результатов и хранится в переменной с именем "searchResultsList" внутри своего экземпляра. Вы можете получить его оттуда. Также, пожалуйста, скрыть прогресс-бар теперь [в MVC] Вид: Спасибо большое телеведущий [ПДТ] Вид: Спасибо "контроллер" [в MVC] (Теперь вид ставить себе вопрос: Как я должен представить результаты я получу от модели пользователю? Если Год выпуска фильма приди первым или последним...? Он должен быть в вертикальном или горизонтальном списке? ...) Если вам интересно, я пишу серию статей, посвященных архитектурной модели приложения (в MVC, MVP и MVVP, чистая архитектура, ...) в сопровождении портале GitHub РЕПО. Несмотря на образец, написанный для Android, основополагающие принципы могут быть применены к любой среде.
0 голосов
от
МВП = модель-представление-презентатор В MVC = модель-представление-контроллер Обе презентации моделей. Они отдельно в зависимости от модели (думаю, что объекты домена), свой/веб-страница на экране (вид), и как ИП должен вести себя контроллер (ведущий/) Они довольно похожи по концепции, люди инициализировать ведущий/контроллер по-разному в зависимости от вкуса. Вот большая статья на различия. Наиболее заметным является то, что паттерн MVC и модель обновляя представления.
...