https://github.com/surfstudio/surf-mvp-example
https://github.com/surfstudio/surf-mvp-example
Last synced: 7 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/surfstudio/surf-mvp-example
- Owner: surfstudio
- Created: 2022-03-04T17:18:30.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-04-01T15:20:42.000Z (over 2 years ago)
- Last Synced: 2025-01-25T22:57:56.863Z (9 months ago)
- Language: Swift
- Size: 43.9 KB
- Stars: 2
- Watchers: 7
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# SurfMVP Example
Пример реализации архитектуры SurfMVP.
### Краткая теория
Какие компоненты должны реализовать те или иные протоколы?
- **ViewInput** – реализует сама **View**, ссылку держит **Presenter**
- Данный протокол описывает методы, при помощи которых **Presenter** может управлять **View**, передавать данные, изменять состояния и так далее.
- **ViewOutput** – реализует **Presenter**, ссылку на него держит **View**
- Протокол описывает набор действий, которые могут произойти во **View**, и методы жизненного цикла, например, события взаимодействия пользователя с экраном.
- **RouterInput** – реализует **Router**, а ссылку на него держит **Presenter**
- Он является единственным ответственным за то, чтобы инициировать дальнейшую навигацию в приложении.
- **ModuleInput** – реализует **Presenter**
- Данный протокол должен содержать в себе методы, при помощи которых другой модуль, который держит ссылку на этот протокол, мог бы изменять состояния текущего модуля.
- **ModuleOutput** – реализует **Presenter** вызывающего модуля, ссылку держит **Presenter** вызываемого модуля
- **ModuleOutput** передается в Configurator вызываемого модуля и там устанавливается в **Presenter**. Содержит в себе методы модуля, которые влияют на поведение вызывающего модуля.
- **ModuleTransitionable** – реализует **View**, ссылку на него держит **Router**
- Это единственный «базовый» протокол в SurfMVP. Он нужен для того, чтобы предоставить Router набор методов для работы с навигацией по приложению.---
Более подробную информацию о SurfMVP можешь найти:
- в [статье на habr.com](https://habr.com/ru/company/surfstudio/blog/485172/);
- в [статье на github](https://github.com/surfstudio/Surf-iOS-Developers/blob/master/ru/Docs/tech-stack/architectures/Surf_MVP.md);
- либо [прочитать](https://github.com/surfstudio/Surf-iOS-Developers/blob/master/ru/Docs/tech-stack/architectures/Surf_MVP_Coordinators.md) про модификацию данной архитектуры с помощью координаторов.