Mvc Мертв, Пришло Время Переехать

MVC — феноменальная идея.

У вас есть модели, которые являются независимыми частями состояния, представления, которые являются независимыми частями пользовательского интерфейса, и контроллеры, которые являются независимыми частями.

эм?



Что?

Я конечно не первый, кто это заметил, но проблема MVC в том, что в контроллеры пихают слишком много кода.

Чтобы исправить это, я использую новый шаблон: ДВИГАТЬСЯ .

М одели, О операции, В взгляды и ? вентиляционные отверстия.



Обзор



MVC мертв, пришло время ПЕРЕЕХАТЬ

Я расскажу об этом подробнее позже, но на этой диаграмме показана базовая структура приложения MOVE.
  • Модели представляют собой все, что необходимо знать вашему приложению.

  • Операции представляют собой все, что делает ваше приложение.

  • Представления — это посредник между вашим приложением и пользователем.

  • События используются для безопасного соединения всех этих компонентов.

Чтобы избежать спагетти с кодом, стоит отметить, что существуют рекомендации относительно того, каким объектам какого типа разрешено что делать.

На схеме я их показал стрелками.

Например, представлению разрешено прослушивать события, инициируемые моделью.

Операциям разрешено изменять модели, но модели не должны указывать на представления или операции.



Модели

Архетипическая модель, объект «пользователь».

Он содержит адрес электронной почты и, возможно, имя и номер телефона.

В приложении MOVE модели являются всего лишь оболочками данных.

Это значит, что помимо геттеров и сеттеров они могут содержать функции, позволяющие проверить «это пароль пользователяЭ», но не содержат функций, сохраняющих данные в базу данных или загружающих их в сторонний API. Это работа «операций».



Операции

Типичная операция для приложения: авторизация пользователя.

На самом деле это две объединенные вместе подоперации: первая: взять почту и пароль у пользователя, вторая: загрузить модель «пользователя» из базы данных и проверить пароли на целостность.

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

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

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



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

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

Когда пользователь нажимает кнопку входа в систему, представление генерирует событие «loginAttempt», которое содержит имя пользователя и пароль, введенные пользователем.

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

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

Важно то, что представления не модифицируют модели напрямую, они просто вызывают события с операциями и ждут изменений, слушая события, запускаемые моделями.



События

Событие «loginAttempt» запускает представление, когда пользователь нажимает кнопку входа в систему.

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

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



Почему сейчас?

Я не хочу, чтобы меня неправильно поняли, утверждая, что MVC — это плохо; За последнее десятилетие это был невероятно успешный способ структурирования больших приложений.

Однако примерно в то время, когда он был изобретен, стали популярными новые методы программирования.

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

Я подчеркиваю: MVC — это круто, но он разработан с использованием технологий, созданных десятилетиями.

MOVE — это просто обновление, позволяющее лучше использовать имеющиеся у нас инструменты.

Теги: #MVC #перемещение #шаблоны #шаблоны #программирование

Вместе с данным постом часто просматривают: