Переход от MVC к Clean Swift ( VIP) включает перераспределение ответственности из ViewController в Worker, Interactor, Presenter и Router.
Основные этапы:
- Идентификация сущностей и потоков: Определить, какие ViewController соответствуют каждому VIP-модулю и какие взаимодействия происходят.
- Создание шаблонов Clean Swift компонентов: Сгенерировать или создать вручную шаблоны для Interactor, Presenter, Worker, Router, Model и ViewController для каждого переводимого модуля.
- Рефакторинг ViewController: Удалить бизнес-логику и логику представления, оставляя только UI-код и код, взаимодействующий с Interactor и Router.
- Обработчики событий UI отправляют запросы в Interactor.
- ViewController обновляется на основе данных, полученных от Presenter.
- Перенос бизнес-логики в Interactor: Бизнес-правила, взаимодействие с Worker'ами и обработка входящих запросов переносятся в Interactor. Interactor вызывает Worker'ы для выполнения конкретных задач (сетевые запросы, работа с базой данных и т.д.).
- Перенос логики представления в Presenter: Преобразование данных из Interactor в формат, пригодный для отображения на UI. Presenter отправляет готовые данные во ViewController.
- Создание Worker'ов: Реализация конкретных операций (например, загрузка данных с сервера) в отдельных Worker-классах. Worker'ы вызываются из Interactor.
- Настройка Router: Определение переходов между модулями. Router отвечает за создание и настройку следующего VIP-модуля и передачу данных при переходе.
- Настройка связей: Установить связи между компонентами каждого VIP-модуля (например, ViewController содержит ссылку на Interactor, Interactor на Presenter и Worker'ы, Presenter на ViewController, Router содержит ссылки на Data Passing протоколы).
- Тестирование: Написание модульных и интеграционных тестов для каждого компонента (Interactor, Presenter, Worker) и проверка корректности работы всей системы.
Пример переноса логики загрузки данных:
В MVC:
swift
В Clean Swift:
swift