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

Шаблон проектирования, обсуждаемый здесь сегодня, — это шаблон MVC. MVC расшифровывается как Модель-Представление-Контроллер. Этот шаблон состоит из трех взаимосвязанных компонентов и изначально был разработан для создания настольных приложений с графическим интерфейсом. В современном мире программирования он используется во многих местах, таких как разработка мобильных и веб-приложений.

Итак, что же делают три взаимосвязанных компонента, составляющих шаблон проектирования Model-View-Controller?

Модель

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

Вид

Представление обрабатывает все, что связано с компонентами пользовательского интерфейса. Обычно они многоразовые. В экосистеме iOS примером представления может быть UIButton. Представления обновляются контроллером после того, как контроллер был уведомлен о том, какие данные использовать в модели.

Контроллер

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

Вот наглядное изображение того, как все это работает вместе:

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

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

Пример MVC с использованием Swift: https://github.com/andrew-lundy/mvc