Transcript
Page 1: The MVC Renaissance | Возрождение MVC

Возрождение MVC // what if it’s not that bad?

Булат Хабиров, iOS разработчик, Uvee Studio

Page 2: The MVC Renaissance | Возрождение MVC

Что такое Apple MVC?

• Model-View-Controller

• Model — работа с данными (структура и т.д.)

• Controller — дает данные из Model во View, реагирует на действия пользователя

• View — отображает данные, отвечает за расстановку объектов на экране

Page 3: The MVC Renaissance | Возрождение MVC

Что будет если не задумываться об архитектуре?

• View практически ничего не делает

• Вся логика приложения копится во ViewController

• Сложно ориентироваться в проекте

• Сложно дебажить/вносить правки

• Практически невозможно тестировать

больше тысячи строк!

Page 4: The MVC Renaissance | Возрождение MVC

Что такое хорошая архитектура?

• Обязанности хорошо распределены между сущностями, которые имеют определенные роли

• Удобно тестировать

• Несложная реализация

• Простое обслуживание проекта в дальнейшем

Page 5: The MVC Renaissance | Возрождение MVC

Какой паттерн тогда выбрать?

Page 6: The MVC Renaissance | Возрождение MVC

Apple издевается? (нет)

Page 7: The MVC Renaissance | Возрождение MVC

MVC: а что если?

• View != ViewController

• Стиль и расстановка должны быть во View

• ViewController использует loadView()

• ViewController передает данные для отображения во View, берет их из Model

• View делегирует события пользователя к ViewController

Page 8: The MVC Renaissance | Возрождение MVC

DEMO

Page 9: The MVC Renaissance | Возрождение MVC

Что мы получили

• Разгрузили ViewController путем непосредственного использования View

• Логику работы с Model (получение/обработка данных) можно выносить в дополнительные классы/структуры — это не нарушит паттерн

• Названия сущностей действительно соответствуют их обязанностям

• Без долгого продумывания модулей (VIPER)

• Без сторонних библиотек (rxSwift, PromiseKit)

Page 10: The MVC Renaissance | Возрождение MVC

Что дальше?

• Богдан Орлов, Badoo: iOS Architecture Patterns

• Официальная документация Apple по Model-View-Controller design pattern

• UIViewController class reference

• UIView class reference

• Относительно новый паттерн, набирающий популярность на GitHub — applepride.github.io/PIDOR/