Кабинет пользователя
Идентификатор пользователя
Пароль
Паттерн — повторимая архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого контекста.

Model-View-Controller (MVC)

Под Моделью, понимается часть содержащая в себе функциональную бизнес-логику приложения. Модель должна быть полностью независима от остальных частей продукта. Модельный слой ничего не должен знать об элементах дизайна, и каким образом он будет отображаться. Достигается результат, позволяющий менять представление данных, то как они отображаются, не трогая саму Модель. Модель — это бизнес-логика приложения. Модель обладает знаниями о себе самой и не знает о контроллерах и представлениях. Модель — это слой данных (DAO, база данных, XML-файл), менеджер базы данных, набор объектов или просто логика приложения.

В обязанности Представления входит отображение полученных от Модели данных. Представление не может напрямую влиять на модель (доступ только на чтение к данным; КРАЙНЕ СПОРНОЕ "РЕЛИГИОЗНОЕ" УТВЕРЖДЕНИЕ).
В представлении реализуется отображение данных, которые получаются от модели любым способом.
Примеры представления: HTML-страница, WPF форма, Windows Form.




Наиболее распространенные виды MVC-паттерна, это:
  • Model-View-Controller (подвид вида)
  • Model-View-Presenter
  • Model-View-View Model





Model-View-Presenter


MVP design pattern. Eltask.com open knowledge base.
Данный подход позволяет создавать абстракцию представления. Для этого необходимо выделить интерфейс представления с определенным набором свойств и методов. Презентер, в свою очередь, получает ссылку на реализацию интерфейса, подписывается на события представления и по запросу изменяет модель.

Признаки презентера:
  • Двухсторонняя коммуникация с представлением;
  • Представление взаимодействует напрямую с презентером, путем вызова соответствующих функций или событий экземпляра презентера;
  • Презентер взаимодействует с View путем использования специального интерфейса, реализованного представлением;
  • Один экземпляр презентера связан с одним отображением.


Реализация:
Каждое представление должно реализовывать соответствующий интерфейс. Интерфейс представления определяет набор функций и событий, необходимых для взаимодействия с пользователем (например, IView.ShowErrorMessage(string msg)). Презентер должен иметь ссылку на реализацию соответствующего интерфейса, которую обычно передают в конструкторе.
Логика представления должна иметь ссылку на экземпляр презентера. Все события представления передаются для обработки в презентер и практически никогда не обрабатываются логикой представления (в т.ч. создания других представлений).

MVP используется в ситуации, когда невозможно связывание данных (нельзя использовать Binding).

Пример- Windows Forms.




Model-View-View Model


MVVM design pattern. Eltask.com open knowledge base.
Данный подход позволяет связывать элементы представления со свойствами и событиями View-модели. Можно утверждать, что каждый слой этого паттерна не знает о существовании другого слоя.

Признаки View-модели:
  • Двухсторонняя коммуникация с представлением;
  • View-модель — это абстракция представления. Обычно означает, что свойства представления совпадают со свойствами View-модели / модели
  • View-модель не имеет ссылки на интерфейс представления (IView). Изменение состояния View-модели автоматически изменяет представление и наоборот, поскольку используется механизм связывания данных (Bindings)
  • Один экземпляр View-модели связан с одним отображением.


Реализация:
При использовании этого паттерна, представление не реализует соответствующий интерфейс (IView).
Представление должно иметь ссылку на источник данных (DataContex), которым в данном случае является View-модель. Элементы представления связаны (Bind) с соответствующими свойствами и событиями View-модели.
В свою очередь, View-модель реализует специальный интерфейс, который используется для автоматического обновления элементов представления. Примером такого интерфейса в WPF может быть INotifyPropertyChanged.

MVVM используется в ситуации, когда возможно связывание данных без необходимости ввода специальных интерфейсов представления (т.е. отсутствует необходимость реализовывать IView).

Пример использования - WPF.




Model-View-Controller


MVC design pattern. Eltask.com open knowledge base.
Основная идея этого паттерна в том, что и контроллер и представление зависят от модели, но модель никак не зависит от этих двух компонент.

Признаки контроллера
  • Контроллер определяет, как представление должно быть отображено в данный момент;
  • События представления могут повлиять только на контроллер. Контроллер может повлиять на модель и определить другое представление.
  • Возможно несколько представлений только для одного контроллера.


Реализация:
Контроллер перехватывает событие извне и в соответствии с заложенной в него логикой, реагирует на это событие изменяя Модель, посредством вызова соответствующего метода. После изменения Модель использует событие о том что она изменилась, и все подписанные на это события Представления, получив его, обращаются к Модели за обновленными данными, после чего их и отображают.

MVC используется в ситуации, когда связь между представлением и другими частями приложения невозможна (и Вы не можете использовать MVVM или MVP). Пример - ASP.NET MVC.




Для MVVM связывание представления с View-моделью осуществляется автоматически, а для MVP — необходимо программировать.

Комментарии и вопросы

Опубликовать комментарий или вопрос

Copyright 2024 © ELTASK.COM
All rights reserved.