Паттерн MVC

Моя интерпретация широко известного паттерна.

Это классический подход для построения веб-приложений, который находит применение практически везде

Он говорит от том, что есть 3 основных компонента:

  • Model - данные
  • View - предстваление
  • Controller - бизнес логика

Это такая абстракция, которая позволяет сгруппировать компоненты/классы/функции по выполняемым задачам.

Model

Так, например, модель хранит и получает данные. Не важно откуда. Это может быть база данных, текстовый файл, сервисы гугла или даже термометр на подоконнике. Важно что модель позволяет работать с определённым типом данных.

Важно понимать, что модель не имеет представления зачем кому то нужны эти данные. Ей об этом знать не нужно.

View

Представление - отображение полученной информации. Предствление понятия не имеет откуда взялись эти данные, и часто даже не знает что это такое. Зато представление может показывать переданные данные, т.е. оно знает как их отображать. Самый простой пример представления - это то, куда ты смотришь. Это экран, на котором написан этот текст. Представление знает как показать этот текст, но не знает откуда этот текст появился. Также представления - это шаблоны сайтов, формочки в телефоне, графики, каптчи, rss фиды.

Controller

Бизнес-логика - связующее звено. В зависимости от задачи, которая поступила контроллеру он выдёргивает нужные данные из модели и помещает их в нужное представление. Некий glue.

Контроллер не знает как получаются данные и каким образом будет отображать предствление, но знает какую модель и какое представление нужно использовать для конкретного запроса. Как менеджер :)

Например?

А теперь пример с температурой (нечто дающее информацию о температуре).

У нас есть модель - это может быть: сервисы яндекса, сохранёная температура в бд или термодатчик подключенный к компу. Каждая модель знает как работать со своим datasource(интернет, подключение к бд, последовательный порт)

У нас есть представление - это может быть: вывод в консоль, вывод на экран компьютера, зачитывание голосом компьютера или вывод на принтер. Опять же - на вход одни и те же данные (цифра - температура), а каждое предстваление знает "показать" то, что ему пришло.

И наконец бизнес-логка это всё объединяет - оно понимает что его спрашивают и дёргает нужную модель, подсовывая данные в нужное представление. Важно, что контроллер не знает как были полученны данные и как они будут отображаться.

Итого

Если не понятно, перечитай ещё раз, продолжая ассоциативный ряд моих примеров.

Лучше поймёшь только когда напишешь сам :) Вот только тогда наступает полное понимание.

И да, история про MVC это история о малосвязанности компонентов. Как ты понял что каждый компонент делает только то, что он знает, не лезя в чужое дело.