Наконец-то
статью будет по программированию (давно
уже такого не бывало у меня). Правда
сегодня будет только теоретическая
часть, надо же все-таки описать что к
чему. Статья будет посвящена паттерну
проектирования приложения MVVM.
MVVM — это
сокращение, полное наименование —
Model-View-ViewModel (когда только услышал полное
название не мог понять, почему два раза
View и Model повторяется. А потом увидел
написание и понял, что это ViewModel, слитно).
Модель-Представление-Мдель представления
по русски.
Вся суть
паттерна MVVM заключается в следующем
(важно — по моему мнению): в разделении
бизнес-логики, логики представления и
пользовательского интерфейса (как раз
разделение между моделью, представлением
и моделью представления). С помощью
этого можно очень просто поддерживать
и тестировать приложения.
MVVM, как
и понятно, состоит из трех частей (они
сходи с паттерном MVC, в веб-строительстве применяется).
Во View описывается интерфейс приложения,
причем — он не связан с бизнес-логикой
напрямую, это важно (в идеале, конечно,
не связан). То есть, один человек (дизайнер
интерфейсов) может создавать внешний
вид приложения и передавать его дальше,
программисту для реализации бизнес-логики.
Обычно,
в Model'e представлена модель предметной
области программы. То есть — описывается
структура данных, например — таблицы
и представления из базы данных (лично
я именно так и делаю). Так же туда можно
включить логику обработки (валидации)
этих данных.
И во
ViewModel'e описывается бизнес-логика
приложения и те данные, которые должны
быть отображены в интерфейсе (свойства).
Связи с интерфейсом у ViewModel'и нет (это
не так, как в WinForm'сах с их обработчиками
событий). Модель представления еще нужна
для связи данных и представления
(обрабатывает данные из модели и кидает
обработанные данные в представление).
В итоге,
минимальный проект MVVM выглядит примерно
так — есть модель, представление, модель
представления. Обработчики кнопок (и
других элементов) в MVVM не используются.
Во View должна быть только одна строчка
кода — InitializeComponent(). И еще надо указать
Модель представления, которую должен
использовать View — и все (конечно, если
не захотите использовать паттерн MVVM —
то можно обработчики нажатий кнопок
юзать, но в MVVM этого делать нельзя).
В обще,
в самом начале MVVM для меня темным лесом
казался, ничего не было понятно. Сейчас
я до сих пор его изучаю. Поэтому, лучше
несколько раз данную статью прочитать,
и потом, через некоторое время — еще
раз. Осознание MVVM приходит через некоторое
время, а не сразу. И напоследок — еще
раз скажу, что статья — это мое лично
мнение по поводу паттерна MVVM.
Комментариев нет:
Отправить комментарий