the mvc renaissance | Возрождение mvc

Post on 19-Mar-2017

323 Views

Category:

Software

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

Что такое Apple MVC?

• Model-View-Controller

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

MVC: а что если?

• View != ViewController

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

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

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

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

DEMO

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

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

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

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

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

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

Что дальше?

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

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

• UIViewController class reference

• UIView class reference

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

top related