и к своему сожалению обнаружил, что делал систему совершенно неправильно.. Поэтому решил написать для самого себя, ну и конечно для того, кто это будет читать, некое описание этого паттерна.
Для начала предлагаю поставить задачу, потому что зачем применять шаблон проектирования, если мы не знаем, что мы хотим проектировать?
Задача:
Необходимо отобразить на экране данные о пользователе, который открыл программу.Способ решения:
Так как мы выбрали WPF в качестве средства для отображения данных, применим паттерн MVVM.В самом общем случае этот паттерн представляет собой триединство, состоящее из Модели(так "по-умному" называют то, что необходимо отобразить), Представления (форма WPF в нашем случае) и Модели представления(это то, что знает как показать модель представлению, и то,что отлавливает действия пользователя и реагирует на них, изменяя модель).
Значит в нашем случае Модель - это класс Пользователь со свойствами, полями и методами (Например свойства "Имя","Фамилия" или метод "Сменить ник").
Модель представления - специальный класс, который знает, что из Модели нужно Представлению и знает как это Представлению показать.
Представление - форма состоящая, например, или нескольких текстовых полей для изменения свойств модели.
Итог:
Паттерн MVVM отличается от всех остальных тем, что он специализирован под WPF. Это даёт некое преимущество перед другими паттернами - Модель представления теперь может ничего не знать о Представлении. Получается, что Модель не знает о Модели представления, а Модель представления знает о Модели, т.е. хранит свойства, которые описывают поля Модели. Модель представления не знает о Представлении, она просто хранит свойства, к которым в свою очередь привязывается Представление. Представление знает о Модели представления, оно привязывается к свойствам Модели представления.
UML схема шаблона MVVM:
Комментариев нет:
Отправить комментарий