This code represent an example to help me to deliver my talk regarding to Coordinator Pattern.
- Separation of concern, because VC doing many things
- Hard to change the flow because navigation flows are handled on VC
- Hard to test the flow correctness
- VC tend to hold unneccessary dependency during passing data in certain flow
- Handle the navigation flows
- Manage the view controllers in one flow
- Manage data that can be used on other controllers in one flow
- Using delegate
- Using closure / blocks
- Isolating UINavigationController specific things into one another layer for better testability
- View Controllers & Coordinator creation using factory & also abstracting them to adhere Open/Closed principle