Site icon AppTractor

Понимаем архитектуру VIPER

Существует множество шаблонов проектирования, таких как MVI, MVP, MVVM и т.д. Все они имеют свои преимущества и недостатки. В зависимости от размера вашего проекта, вы можете выбрать тот или другой. В этой статье я попытаюсь на примере объяснить шаблон проектирования VIPER. Также вы можете прочитать о других шаблонах проектирования архитектуры в другой моей статье здесь.

Прежде всего, я хочу немного рассказать о самомVIPER.

Что такое VIPER?

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

View

Это наш ViewController, и он отвечает за отображение данных пользователю. Здесь мы используем только данные от презентера. Никаких других действий не предпринимается.

Interactor

Можно сказать, что он действует как ViewModel в шаблоне проектирования MVVM. Это часть приложения, которое мы называем бизнес логикой. UI-операции здесь не выполняются. Здесь выполняются операции выборки, обновления, доступ к API и т.д.

Presenter

Это мост между View и Interactor. Этот уровень не должен содержать логических операций пользовательского интерфейса или бизнес-процессов.

Entity

Это модельная часть приложения. Модели данных, связанные с приложением, находятся здесь. Эта часть взаимодействует только с Interactor.

Router

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

Давайте посмотрим поближе. Я попытался объяснить VIPER с помощью простого iOS-приложения.

Пример VIPER

Во-первых, мы сделаем наше представление. Здесь вы можете увидеть кнопки операций, результат и текстовые поля ввода. Я использовал Storyboard, чтобы создать свое представление.

Протоколы являются важной частью в этой архитектуре. Я рассмотрю протоколы под двумя разными названиями: протоколы связи (carrier) и основные протоколы (main).

В этом приложении InteractorToPresenterProtocol и PresenterToViewProtocol являются нашими протоколами связи. Эти протоколы помогают нам переносить финальные данные, сформированные в интеракторе, от презентера к представлению. Вот почему мы назвали их InteractorToPresenter и PresenterToView.

ViewToPresenterProtocol и PresenterToInteractorProtocol являются основными протоколами, они включают в себя не только функции, но и свойства. Мы используем эти протоколы для отправки данных из представления в интерактор через презентер.

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

Обратите внимание, что в тригерном классе должен быть объект из сработавшего класса.

Теперь мы создадим другие элементы VIPER: интерактор и презентер.

В роутере делаем авторизацию, позволяющую работать всем протоколам.

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

Но в целом мы завершили наше базовое приложение для iOS, используя шаблон проектирования VIPER. Вы можете получить доступ ко всему коду здесь.

Я надеюсь, что это было достаточно просто для вас, чтобы понять шаблон проектирования VIPER.

Источник

Еще про VIPER

Exit mobile version