Доброго времени суток. Пожалуйста, объясните новичку, что такое MVC?
Знаю что это Модель-Представление-Контроллер, и что один влияет на другой, при этом Контроллер выступает посредником между Моделью и Представлением. НО!
Мне трудно представить, что являет собой Модель? Перечитал много материала, но хоть убейте, не понимаю что такое Модель(
Буду признателен за очень простой пример.
Ответ
MVC — это не только про сетевые сервисы, но вообще про всё, где есть структурированные наборы данных и необходимость их отобразить.
Если говорить обобщённо, модель — это всего лишь некий объект за универсальным интерфейсом, который умеет оперировать неким набором данных. К этому объекту мы можем подключать контроллеры (а в некоторых реализациях и виды, напрямую), не задумываясь об источнике данных и тонкостях взаимодействия с ним.
Возьмём для примера фреймворк Qt, используемый при разработке приложений. Он предоставляет следующее:
Интерфейс модели, позволяющий оперировать древовидной иерархией таблиц. Это самое обобщённое представление; на деле же модели реализуют списки (таблицы в один столбец без дочерних элементов), таблицы (таблицы MxN без дочерних элементов), деревья (таблицы в один столбец с дочерними элементами), ну или собственно иерархию таблиц (дерево с дополнительными атрибутами у каждого элемента).
Курсор, позволяющий независимо гулять по одной и той же модели из нескольких мест одновременно. Причём курсор «знает», какой модели он принадлежит.
Набор готовых видов (списком, таблицей, деревом, графиком и т. д.), которому необходимо передать курсор на отображаемый корневой элемент. Дальше вид клонирует этот курсор и, пробегая им по модели, сам решает, какие элементы и как он будет отображать.
Возможность отобразить любые данные в любом стандартном виде, если источник данных обернут в интерфейс модели.
Возможность написать свой вид для отображения выборки из любого потенциального источника данных, обёрнутого в интерфейс модели. К примеру, это может быть набор полей для отображения какой-то одной записи с кнопками «назад» и «вперёд»; здесь вид пробегает курсором только по указанным полям (столбцам) корневого элемента (записи).
Комментариев нет:
Отправить комментарий