cs50 mvc

Пришло время изучить один из важных шаблонов проектирования — MVC. Когда программа становится большой, становится сложно уследить, что и где происходит. А уж обезопасить все и сделать код легко обновляемым — и того сложнее. И вообще, разные ситуации бывают. Представьте, что вам нужно создать какую-то игрушку, которая должна работать и на компьютере, в окне, и на смартфоне. Какой-нибудь тетрис.

Логика игры — одинаковая, а вот интерфейс, управление — разные. На компьютере игрок использует «живую» клавиатуру и мышь, на смартфоне — только виртуальные кнопочки, которые еще нарисовать нужно. Что делать? Дважды переписывать?

Для решения этих и других проблем был придуман принцип построения программ MVC (Model-View-Controller).

Model — это самая суть приложения, его логика. Скажем, описанные и реализованные программно правила «Тетриса» без проверки правильности, без графики. На эту часть пользователь не влияет, она для него закрыта.

View содержит всё, что касается отображения данных пользователю. Именно в ней содержится код, который управляет показом окон, страниц, сообщений — интерфейс.

Controller отвечает за код, который занимается обработкой действий пользователя. Любые действия пользователя, направленные на изменения модели должны обрабатываться тут. Такая часть называется Controller.

Так вот, если вы хотите тетрис на разных платформах, подготовьте несколько View. А Controller в зависимости от того, на чем ты запускаешь игрушку, выберет подходящий интерфейс. А также подскажет, что менять в модели в ответ на действия пользователя.

Такую модель очень часто применяют в промышленном программировании.