MVC

Example: https://github.com/faif/python-patterns/blob/master/patterns/structural/mvc.py


MVC состоит из объектов трёх видов. Модель – это объект приложения, а представление – его внешний вид на экране. Контроллер описывает, как интерфейс реагирует на управляющие воздействия пользователя. До появления MVC эти объекты в пользовательских интерфейсах смешивались. MVC отделяет их друг от друга, за счет чего повышается гибкость и возможность повторного использования.

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

MVC позволяет также изменять реакцию представления на действия пользователя. При этом визуальное воплощение остается прежним.


  • Бизнес логика и валидация пользовательского ввода может быть в разных элементах (модель, контроллер). Сейчас в тренде – “тонкий” контроллер, активная модель.
  • Преимущества: повторное использование кода, удобство тестирование (по отдельности), ускорения разработки за счет независимой разработки частей командой, возможность замены отдельных элементов, снижение трудозатрат за счет разделения между разными разработчиками (фронт, бэк).

📂 Паттерны | Последнее изменение: 10.01.2024 17:11