https://pilgwon.github.io/blog/2018/11/14/RxFlow-Part-1-Theory.html
https://twittemb.github.io/posts/2017-12-09-RxFlow-Part2/
를 기반으로 이해해보자
Flow: 어플리케이션 내부의 네비게이션 공간을 정의하고, 네비게이션 액션을 선언하는 장소
Step: 어플리케이션 내부의 네비게이션 상태 - enum으로 정의, 내부에 값도 가질 수 있음.
Stepper: Step을 발생시킬 수 있는 어떠한 것. Flow 내부의 모든 네비게이션 Step을 트리거하는 권한을 가진다.
Presentable: 표현될 수 있는 무언가를 추상적으로 표현한 것. 기본적으로 UIViewController, Flow가 Presentable이다. Presentable이 반응형 observable을 제공해, Coordinator가 그를 구독해 Flow Step을 핸들링 한다.
Coordinator가 observer, Presentable이 observes.
Flowable: Stepper와 Presentable을 조합하는 data structure. 이걸 통해 새로운 step을 생성할 다음 작업이 무엇인지 Coordinator를 통해 알려준다.
NextFlowItem = FlowContributor (이게 최신버전): 반응형 매커니즘에서 새로운 Step을 발생시킬 다음 무언가에 대해 Coordinator에게 이야기해주는 역할. Presenter와 Stepper를 가지는 Data 구조.
Coordinator: 알맞은 조합의 flow와 step을 정의하면, Coordinator가 이 조합을 일관된 방법으로 섞어주는 역할을 한다.
기본 개념이 "나는 이화면으로 갈거야!" 가 아닌 "누군가가 이런 행동을 했어" 가 되고, 이를 표시해줌,
RxFlow는 현재 네이게이션 Flow를 보고, 올바른 화면을 고르게 된다.
Flow는 어플리케이션의 논리적인 네비게이션 섹션을 표현한다.
Flow가 로직적인 navigation 섹션을 어플리케이션을 나타내고, (어딜로 푸쉬한떤가 뭘 보여준다던가 등등....)