Как стать автором
Обновить

MVC без контроллера

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров7.7K

Прошло уже лет 25 со дня изобретения концепции Model‑View‑Controller, а споры и её модификации не завершаются по сей день. Хотя очевидно, что в изначальном виде эта концепция ужасна, не объектно‑ориентирована и избыточна. А избыточно именно наличие контроллера, в то время как разделение визуализации и бизнес‑логики является сердцем этой концепции, из‑за чего и живет эта идея до сих пор. Но вопрос контроллера замыливается, хотя понятно, что на его месте должна быть реализация биндинга. Особенно, когда в игровом движке Unity это биндинг уже есть изначально, хотя и появился косвенно. Об этом подробно рассказываю в следующем видео.

0:00 Мы не будем делать полноценное MVC.

1:40 Пример визуализации (View) и задачи.

3:46 Специфика Unity.

5:00 Создание класса визуализации PersonUI и префабов PersonSlot и PersonSlotExt.

12:15 Биндинг реализуется через связь визуальных элементов в префабах со свойствами класса PersonUI.

15:50 Пример создания объекта на сцене через префаб, заполнение свойств класса PersonUI из класс Person, выполняющего роль модели.

17:00 Класс визуализации PersonUI агрегируется в классе модели Person как часть.

18:00 Создаем реакцию на событие нажатия кнопки — метод OnClick().

24:00 В визуальном классе PersonUI создаем событие Click, которое произойдет в методе OnClick() в момент нажатия пользователем на кнопку.

28:00 В невизуальном классе Person создаем метод ViewPersonInfo(), который синхронизирует свойства визуального класса с невизуальным.

37:15 В классе Society (старшая в иерархии модель) агрегируем класс PersonUI, который будет использоваться для разных Person.

45:10 Подписываемся на событие Click в классе Society.

46:40 Добавляем параметр в делегат события, который позволит узнать Id персоны на которой кликнули (нажали кнопку).

54:20 Тестируем, исправляем баги.

1:01:40 Заработало.

1:06:00 Дополнительная доработка, рефакторинг и т. д.

Теги:
Хабы:
Всего голосов 20: ↑1 и ↓19-18
Комментарии20

Публикации

Истории

Работа

.NET разработчик
61 вакансия

Ближайшие события

Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область