Skip to content

Instantly share code, notes, and snippets.

@aybarsyalcin
Created December 19, 2022 11:00
Show Gist options
  • Save aybarsyalcin/aa800e2cb2932f4674f6c4e4ea4c1054 to your computer and use it in GitHub Desktop.
Save aybarsyalcin/aa800e2cb2932f4674f6c4e4ea4c1054 to your computer and use it in GitHub Desktop.
Flow Coordinators - Part 3
protocol CoordinatorFactory {
func makeHomeCoordinator(router: Router) -> Coordinator & HomeCoordinatorOutput
func makeAddressCoordinator(router: Router) -> Coordinator & AddressCoordinatorOutput
}
final class CoordinatorFactoryImp: CoordinatorFactory {
func makeHomeCoordinator(router: Router) -> Coordinator & HomeCoordinatorOutput {
let coordinator = HomeCoordinator(router: router, factory: ModuleFactoryImp(), coordinatorFactory: CoordinatorFactoryImp())
return coordinator
}
func makeAddressCoordinator(router: Router) -> Coordinator & AddressCoordinatorOutput {
let coordinator = AddressCoordinator(router: router, factory: ModuleFactoryImp(), coordinatorFactory: CoordinatorFactoryImp())
return coordinator
}
}
final class ModuleFactoryImp {
}
extension ModuleFactoryImp: HomeModuleFactory {
func makeDetailCoordinatorOutput() -> DetailCoordinatorView {
return DetailBuilder.make()
}
func makeHomeCoordinatorOutput() -> HomeCoordinatorView {
return HomeBuilder.make()
}
}
extension ModuleFactoryImp: AddressModuleFactory {
func makeAddressCoordinatorOutput() -> AddressCoordinatorView {
return AddressBuilder.make()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment