пятница, 24 мая 2013 г.

Паттерн MVVM

Наконец-то статью будет по программированию (давно уже такого не бывало у меня). Правда сегодня будет только теоретическая часть, надо же все-таки описать что к чему. Статья будет посвящена паттерну проектирования приложения 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.

Комментариев нет:

Отправить комментарий