Паттерн MVC на языке Swift. iOS разработка.

Паттерн проектирования Model-View-Controller (MVC) это такой паттерн, в основе которого лежат три сущности: модель, контроллер, представление. Суть этого паттерна заключается в разделении кода приложений по трем ролям соответственно.

model-view-controller

Одна часть кода отвечает за представление пользовательского интерфейса, другая часть кода за логику хранения и обработки модели данных приложения, и последняя соединяет предыдущие 2 части через посредника, с помощью которого происходит взаимодействие между видом и моделью.


Подробнее ознакомиться с данным паттерном ты можешь посмотрев видео, в котором я на примере объясняю, как следовать данной модели при написании приложений для iOS.


Модель

Объекты модели инкапсулируют данные, специфичные для приложения, и определяют логику и вычисления, которые манипулируют и обрабатывают эти данные. Например, объект модели может представлять персонажа в игре или контакт в адресной книге. Объект модели может иметь отношения «один или несколько» с другими объектами модели, поэтому иногда слой модели приложения фактически представляет собой один или несколько графов объектов.

В идеале объект модели не должен иметь явного соединения с объектами представления, которые отображают его данные и позволять пользователям редактировать эти данные – его не должны беспокоить проблемы пользовательского интерфейса и представления.

Связь

Действия пользователя на уровне представления, которые создают или изменяют данные, передаются через объект контроллера и приводят к созданию или обновлению объекта модели. Когда объект модели изменяется (например, новые данные принимаются через сетевое соединение), он уведомляет объект контроллера, который обновляет соответствующие объекты представления.

Представление

Объект представления – это объект в приложении, который могут видеть пользователи. Объект представления может реагировать на действия пользователя. Основная цель объектов представления – отображать данные из объектов модели приложения и обеспечивать возможность редактирования этих данных. Несмотря на это, объекты представления обычно отделены от объектов модели в приложении MVC.

Связь

Объекты представления узнают об изменениях в данных модели через объекты контроллера приложения и сообщают изменения, инициированные пользователем (например текст, введенный в текстовое поле) объектам модели приложения.

Контроллер

Объект контроллера действует как посредник между одним или несколькими объектами представления приложения и одним или несколькими объектами его модели. Таким образом, объекты контроллера являются каналом, через который объекты представления узнают об изменениях в объектах модели и наоборот. Объекты контроллера также могут выполнять задачи настройки и координации для приложения и управлять жизненными циклами других объектов.

Связь

Объект контроллера интерпретирует действия пользователя, выполняемые в объектах представления, и передает новые или измененные данные на уровень модели. Когда объекты модели изменяются, объект контроллера передает эти новые данные модели объектам представления, чтобы они могли их отображать.