RxFlow

https://github.com/RxSwiftCommunity/RxFlow

  • 각 요소에 대한 간단한 번역 + 예제 코드를 보면서 이해한 내용을 덧붙였습니다.

Flow : 각 Flow는 당신의 앱에서 Naivigation 영역을 의미합니다. 이것은 네비게이션 동작 (예 : UIViewController 또는 다른 Flow 표시)을 선언하는 장소입니다. Flow에는 Presentable가 있어서 실제로 미리 정의되어 있는 VC로의 present 같은 동작을 수행한다.

Step : 각 단계는 응용 프로그램의 Navigation 상태(단계, 종류, Presentable를 가리키기 위한 구분)입니다. FlowStep들의 조합으로 모든 가능한 Navigation 동작을 표현할 수 있습니다. StepFlow들에서 선언된 화면에 전파 될 내부 값 (예 : Id, URL 등)을 내장 할 수도 있습니다.

Stepper : Step들을 발행하는 모든 것은 Stepper가 될 수 있습니다. Stepper들은 Flow들 내부에서 발생하는 모든 네비게이션 동작에 대해 반응(UINavigationControllerDelegate 같은 역할)할 수 있습니다. ViewModel, Reactor 같은 느낌.. 이 안에서 판단해서 NextFlowItem에 사용할 Step를 정하는 식으로 사용한다.

Presentable : presented 될 수 있는 것들의 추상화 입니다.(기본적으로 UIViewController, FlowPresentable 입니다.) Presentable들은 UIKit 호환 방식으로 Flow들과 Step들을 처리하기 위해 Coordnator가 구독하는 Reactive 항목을 제공합니다. 다시 말해 StepperNextFlowItem을 정하도록 하는 트리거를 호출한다는 것. 그래서 NextFlowItem이 나오면 Coordinator가 실제로 실행을 돌려주는 것 같음

NextFlowItem : PresentableStepper를 엮어주는 간단한 데이터 구조 입니다. Coordinator에게 당신의 Reactive mechanism에서 다음 번에 만들어야 할 새로운 Step들이 무엇인지를 알려줍니다.

Coordinator : 일단 개발자가 네비게이션 가능한 FlowStep의 적절한 조합을 정의하면 Coordinator는 이러한 조합을 일관된 방식으로 연결해주는 것입니다.

Flow 내부에 어떤 VC로 Present할지를 다 정의해놓는데.. 그 기준이 Step이고, 결과가 NextFlowItem인데 이건 Coordinator가 사용한다. NextFlowItem을 만드는 과정에서 Presentable하고 (ViewModel:Stepper) 같은 걸 만들어서 조합해준다. 데이터를 Presentable하고 조합해서 넘길때 Stepper로 감싸서 넘겨야 한다.