Расскажу про развитие идеи реактивного программирования. Пройдем путь от MVVM к VIPER при использовании рективщины, обсудим плюсы и минусы последнего в сравнении с императивной реализацией.
3. VIPER
Interactor Presenter View
Router
Показывает информацию
пользователю
и переадресует презентеру
действия пользователя
Управляет
вью-контроллером
Общается с сервером
и базой данных
Отвечает за переходы
между экранами
Entity
Entity
Entity
2
8. Сигналы в RxSwift
var scrollPosition: Observable<CGPoint> = ...
scrollPosition.subscribe(onNext: { point in
print("User scrolled to (point).")
})
7
9. Плюсы сигналов
var tableView: UITableView
1. Скролл-вью не знает ни про каких делегатов.
2. Никаких протоколов.
3. Сигнал можно переиспользовать
в нескольких местах.
tableView.delegate = self
extension OffersViewController: UIScrollViewDelegate {
func scrollViewDidScroll(_ scrollView: UIScrollView) {
processScrolling(scrollView.offset)
}
}
let scrollPosition = tableView.rx.contentOffset
scrollPosition.subscribe(onNext: { offset in
self.processScrolling(offset)
})
8
13. Реактивный интерактор
Interactor Presenter View
InteractorInput ViewProtocolInteractorOutput
· output · view
· interactor
InteractorProtocol
1. Ещё меньше протоколов.
2. Вью и интерактор ничего не знают про презентер.
12