Jump to content

Модель-представление-представление-модель

(Перенаправлено из представления модели ViewModel )

Модель-представление-модель ( MVVM ) — это архитектурный шаблон в компьютерном программном обеспечении, который облегчает отделение разработки графического пользовательского интерфейса (GUI; представление ) — будь то с помощью языка разметки или кода графического интерфейса — от разработки бизнеса . логика или внутренняя логика ( модель ), чтобы представление не зависело от какой-либо конкретной платформы модели.

Модель представления MVVM — это преобразователь значений, [ 1 ] это означает, что он отвечает за представление (преобразование) объектов данных из модели таким образом, чтобы ими можно было легко управлять и представлять. В этом отношении модель представления является более модельной , чем представление , и обрабатывает большую часть (если не всю) логику отображения представления. [ 1 ] Модель представления может реализовать шаблон посредника , организуя доступ к внутренней логике вокруг набора вариантов использования, поддерживаемых представлением.

MVVM — это вариант шаблона проектирования «Модель представления» Мартина Фаулера . [ 2 ] [ 3 ] Он был изобретен архитекторами Microsoft Кеном Купером и Тедом Питерсом специально для упрощения событийно-ориентированного программирования пользовательских интерфейсов. Шаблон был включен в Windows Presentation Foundation (WPF) (графическая система Microsoft .NET ) и Silverlight , производное интернет-приложение WPF. [ 3 ] Джон Госсман, архитектор Microsoft WPF и Silverlight, анонсировал MVVM в своем блоге в 2005 году. [ 3 ] [ 4 ]

Модель-представление-представлениемодель также называется модель-представление-привязка , особенно в реализациях, не использующих платформу .NET . ZK , платформа веб-приложений, написанная на Java , и JavaScript библиотека KnockoutJS используют связыватель модель-представление. [ 3 ] [ 5 ] [ 6 ]

Компоненты шаблона MVVM

[ редактировать ]
Модель
Модель относится либо к модели предметной области , которая представляет контент реального состояния (объектно-ориентированный подход), либо к уровню доступа к данным , который представляет контент (подход, ориентированный на данные). [ нужна ссылка ]
Вид
Как и в шаблонах модель-представление-контроллер (MVC) и модель-представление-презентатор (MVP), представление — это структура, макет и внешний вид того, что пользователь видит на экране. [ 7 ] Он отображает представление модели и получает взаимодействие пользователя с представлением (щелчки мыши, ввод с клавиатуры, жесты касания экрана и т. д.), а также перенаправляет обработку этих действий в модель представления через привязку данных (свойства, обратные вызовы событий). и т. д.), который определен для связи представления и модели представления.
Посмотреть модель
Модель представления — это абстракция представления, предоставляющая общедоступные свойства и команды. Вместо контроллера шаблона MVC или презентатора шаблона MVP в MVVM имеется связующее , которое автоматизирует связь между представлением и его связанными свойствами в модели представления. Модель представления описывается как состояние данных в модели. [ 8 ]
Основное различие между моделью представления и Presenter в шаблоне MVP заключается в том, что у Presenter есть ссылка на представление, а у модели представления — нет. Вместо этого представление напрямую привязывается к свойствам модели представления для отправки и получения обновлений. Для эффективной работы требуется технология привязки или генерация шаблонного кода для выполнения привязки. [ 7 ]
В рамках объектно-ориентированного программирования модель представления иногда можно назвать объектом передачи данных . [ 9 ]
связующее
Декларативные данные и привязка команд неявно присутствуют в шаблоне MVVM. В стеке решений Microsoft связующим является разметки язык XAML . [ 10 ] Связующее освобождает разработчика от необходимости писать стандартную логику для синхронизации модели представления и представления. При реализации за пределами стека Microsoft наличие технологии декларативной привязки данных делает этот шаблон возможным. [ 5 ] [ 11 ] а без связующего вместо этого обычно можно использовать MVP или MVC, и вам придется писать больше шаблонов (или генерировать их с помощью какого-либо другого инструмента).

Обоснование

[ редактировать ]

MVVM был разработан для удаления практически всего графического интерфейса кода (« код программной части ») из уровня представления с помощью функций привязки данных в WPF (Windows Presentation Foundation), чтобы лучше облегчить отделение разработки уровня представления от остальной части шаблона. [ 3 ] Вместо того, чтобы требовать от разработчиков пользовательского интерфейса (UX) писать код графического пользовательского интерфейса, они могут использовать язык разметки платформы (например, XAML ) и создавать привязки данных к модели представления, которая пишется и поддерживается разработчиками приложений. Разделение ролей позволяет интерактивным дизайнерам сосредоточиться на потребностях UX, а не на программировании бизнес-логики. Таким образом, уровни приложения можно разрабатывать в нескольких рабочих потоках для повышения производительности. Даже когда над всей базой кода работает один разработчик, правильное разделение представления и модели более продуктивно, поскольку пользовательский интерфейс обычно меняется часто и на поздних стадиях цикла разработки на основе отзывов конечных пользователей. [ нужна ссылка ]

Шаблон MVVM пытается получить оба преимущества разделения функциональной разработки, обеспечиваемые MVC, одновременно используя преимущества привязки данных и инфраструктуры, привязывая данные как можно ближе к чистой модели приложения. [ 3 ] [ 4 ] [ 12 ] [ нужны разъяснения ] Для проверки входящих данных он использует связующее устройство, модель представления и функции проверки данных всех бизнес-уровней. В результате модель и платформа управляют максимально возможным количеством операций, устраняя или минимизируя логику приложения, которая напрямую манипулирует представлением (например, код программной части).

Джон Госсман раскритиковал шаблон MVVM и его применение в конкретных целях, заявив, что MVVM может быть «излишним» при создании простых пользовательских интерфейсов. Он считает, что для более крупных приложений предварительное обобщение модели представления может оказаться затруднительным, а крупномасштабная привязка данных может привести к снижению производительности. [ 13 ]

Реализации

[ редактировать ]

.NET-фреймворки

[ редактировать ]
  • Библиотека Призма
  • Калиберн, Калиберн.Микро
  • Инструментарий сообщества .NET
  • ДевЭкспресс МВВМ
  • Chinook.DynamicMvvm с открытым исходным кодом
  • DotVVM проект с открытым исходным кодом
  • FreshMvvm
  • Медуза
  • Набор инструментов MVVMLight
  • Набор инструментов Mugen MVVM
  • Реактивный пользовательский интерфейс
  • Платформа Uno — открытый исходный код
  • Раскл
  • МввмКросс
  • МввмЗеро

Библиотеки веб-компонентов

[ редактировать ]
  • Microsoft БЫСТРЫЙ
  • Оми.js

JavaScript-фреймворки

[ редактировать ]

Платформы для C++ и XAML (Windows)

[ редактировать ]
  • Ксамлкк

См. также

[ редактировать ]
  1. ^ Jump up to: а б Смит, Джош; и др. «Мысль: MVVM устраняет на 99% необходимость в преобразователях значений» . Группы Google .
  2. ^ Мартин Фаулер (19 июля 2004 г.). «Шаблон проектирования презентационной модели» . Мартин Фаулер.com.
  3. ^ Jump up to: а б с д и ж Смит, Джош (февраль 2009 г.). «Приложения WPF с шаблоном проектирования Модель–Представление–ViewModel» . Журнал MSDN .
  4. ^ Jump up to: а б Госсман, Джон (8 октября 2005 г.). «Истории Smart Client: введение в шаблон Model/View/ViewModel для создания приложений WPF» .
  5. ^ Jump up to: а б Мэсси, Саймон (9 апреля 2011 г.). «Схемы представления в ЗК» . Проверено 24 марта 2012 г.
  6. ^ Стив Сандерсон. «НокаутJS» .
  7. ^ Jump up to: а б «Шаблон MVVM» . msdn.microsoft.com . 4 октября 2012 года . Проверено 29 августа 2016 г.
  8. ^ Пит Вайсброд. «Шаблон Model–View–ViewModel для WPF: еще один подход» . Архивировано из оригинала 1 февраля 2008 года.
  9. ^ Microsoft (3 апреля 2024 г.). «Руководство. Создание веб-API с помощью ASP.NET Core» .
  10. ^ Вильдермут, Шон (11 мая 2010 г.). «Привязка данных Windows Presentation Foundation: Часть 1» . Майкрософт . Проверено 24 марта 2012 г.
  11. ^ «ЗК МВВМ» . Потикс . Проверено 24 марта 2012 г.
  12. ^ Карл Шиффлетт. «Изучение WPF MV-VM» . Архивировано из оригинала 13 апреля 2009 года . Проверено 5 июня 2009 г.
  13. ^ Госсман, Джон (4 марта 2006 г.). «Байки смарт-клиента: преимущества и недостатки MV-VM» . Конкурс навыков искусственного интеллекта .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 017ed1e772f1280c73a7e64de8e861fb__1716550920
URL1:https://arc.ask3.ru/arc/aa/01/fb/017ed1e772f1280c73a7e64de8e861fb.html
Заголовок, (Title) документа по адресу, URL1:
Model–view–viewmodel - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)