<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.dzmuh.com/index.php?action=history&amp;feed=atom&amp;title=Model-View-ViewModel</id>
	<title>Model-View-ViewModel - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dzmuh.com/index.php?action=history&amp;feed=atom&amp;title=Model-View-ViewModel"/>
	<link rel="alternate" type="text/html" href="https://wiki.dzmuh.com/index.php?title=Model-View-ViewModel&amp;action=history"/>
	<updated>2026-05-05T15:23:39Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://wiki.dzmuh.com/index.php?title=Model-View-ViewModel&amp;diff=13237&amp;oldid=prev</id>
		<title>Dzmuh: Новая страница: «292x292px '''Model-View-ViewModel''' (MVVM) — шаблон проектирования архитектуры приложения. Представлен в 2005 году Джоном Госсманом (John Gossman) как модификация шаблона Presentation Model. Ориентирован на современные платформы разработки, такие как WPF|Windows Presentation...»</title>
		<link rel="alternate" type="text/html" href="https://wiki.dzmuh.com/index.php?title=Model-View-ViewModel&amp;diff=13237&amp;oldid=prev"/>
		<updated>2023-09-11T17:26:12Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «&lt;a href=&quot;/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:MVVMPattern.png&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Файл:MVVMPattern.png (страница не существует)&quot;&gt;thumb|292x292px&lt;/a&gt; &amp;#039;&amp;#039;&amp;#039;Model-View-ViewModel&amp;#039;&amp;#039;&amp;#039; (MVVM) — шаблон проектирования архитектуры приложения. Представлен в 2005 году Джоном Госсманом (John Gossman) как модификация шаблона Presentation Model. Ориентирован на современные платформы разработки, такие как WPF|Windows Presentation...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Файл:MVVMPattern.png|thumb|292x292px]]&lt;br /&gt;
'''Model-View-ViewModel''' (MVVM) — шаблон проектирования архитектуры приложения. Представлен в 2005 году Джоном Госсманом (John Gossman) как модификация шаблона Presentation Model. Ориентирован на современные платформы разработки, такие как [[WPF|Windows Presentation Foundation]], [[Silverlight]] от компании [[Microsoft]]&amp;lt;ref name=&amp;quot;introduction&amp;quot;&amp;gt;{{Cite web |url=http://blogs.msdn.com/b/johngossman/archive/2005/10/08/478683.aspx |title=Introduction to Model/View/ViewModel pattern for building WPF apps |access-date=2010-11-13 |archive-date=2011-06-12 |archive-url=https://web.archive.org/web/20110612072619/http://blogs.msdn.com/b/johngossman/archive/2005/10/08/478683.aspx |deadlink=no }}&amp;lt;/ref&amp;gt;, [[ZK (framework)|ZK framework]]. &lt;br /&gt;
&lt;br /&gt;
== Назначение ==&lt;br /&gt;
Используется для разделения модели и её представления, что необходимо для их изменения отдельно друг от друга. Например, разработчик задаёт логику работы с данными, а дизайнер работает с пользовательским интерфейсом.&lt;br /&gt;
&lt;br /&gt;
== Использование ==&lt;br /&gt;
{{орисс в разделе|дата=2020-08-13}}&lt;br /&gt;
MVVM удобно использовать вместо классического [[Model-View-Controller|MVC]] и ему подобных в тех случаях, когда в платформе, на которой ведётся разработка, есть «[[Связывание данных|связывание данных]]». В шаблонах проектирования [[Model-View-Controller|MVC]]/[[Model-View-Presenter|MVP]] изменения в пользовательском интерфейсе не влияют непосредственно на Mодель, а предварительно идут через Контроллер ({{lang-en|Controller}}) или Presenter. В таких технологиях как [[WPF]] и [[Silverlight]] есть концепция «связывания данных», позволяющая связывать данные с визуальными элементами в обе стороны. Следовательно, при использовании этого приёма применение модели MVC становится крайне неудобным из-за того, что привязка данных к представлению напрямую не укладывается в концепцию MVC/MVP.&lt;br /&gt;
&lt;br /&gt;
== Описание ==&lt;br /&gt;
Шаблон MVVM делится на три части:&lt;br /&gt;
* ''Модель'' ({{lang-en|Model}}) (так же, как в классической MVC) представляет собой логику работы с данными и описание фундаментальных данных, необходимых для работы приложения.&lt;br /&gt;
* ''Представление'' ({{lang-en|View}}) — графический интерфейс (окна, списки, кнопки и т. п.). Выступает подписчиком на событие изменения значений свойств или команд, предоставляемых Моделью Представления. В случае, если в Модели Представления изменилось какое-либо свойство, то она оповещает всех подписчиков об этом, и Представление, в свою очередь, запрашивает обновлённое значение свойства из Модели Представления. В случае, если пользователь воздействует на какой-либо элемент интерфейса, Представление вызывает соответствующую команду, предоставленную Моделью Представления.&lt;br /&gt;
* ''Модель Представления'' ({{lang-en|ViewModel}}) — с одной стороны, абстракция Представления, а с другой — обёртка данных из Модели, подлежащиx связыванию. То есть, она содержит Модель, преобразованную к Представлению, а также команды, которыми может пользоваться Представление, чтобы влиять на Модель.&lt;br /&gt;
&lt;br /&gt;
== Реализации ==&lt;br /&gt;
&lt;br /&gt;
=== .NET ===&lt;br /&gt;
* [https://reactiveui.net/ ReactiveUI]&lt;br /&gt;
* [https://www.dotvvm.com/ DotVVM] open source project&lt;br /&gt;
* [https://github.com/MugenMvvmToolkit/MugenMvvmToolkit Mugen MVVM Toolkit]&lt;br /&gt;
&lt;br /&gt;
=== Javascript ===&lt;br /&gt;
* [[Angular (фреймворк)|Angular 2+]]&lt;br /&gt;
* [[Vue.js]]&lt;br /&gt;
* [[Knockout.js|Knockout.js]]&lt;br /&gt;
* [http://www.oracle.com/webfolder/technetwork/jet/index.html Oracle JET]&lt;br /&gt;
* [[Ext_JS]]&lt;br /&gt;
&lt;br /&gt;
=== Swift ===&lt;br /&gt;
* [https://developer.apple.com/xcode/swiftui/ SwiftUI]&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Silverlight]]&lt;br /&gt;
* [[Windows Presentation Foundation]]&lt;br /&gt;
* [[Команда (шаблон проектирования)|Команда]]&lt;br /&gt;
* [[Наблюдатель (шаблон проектирования)|Наблюдатель]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
{{примечания}}&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
{{википедия|Model-View-ViewModel}}&lt;br /&gt;
&lt;br /&gt;
{{Типы шаблонов проектирования}}&lt;br /&gt;
&lt;br /&gt;
[[Категория:Архитектурные шаблоны проектирования]]&lt;/div&gt;</summary>
		<author><name>Dzmuh</name></author>
	</entry>
</feed>