<aside> 💡 ViewController의 flow logic을 분리하기 위해, 따로 flow 로직을 담당하는 객체인 Coordinator를 만드는 패턴
</aside>
Coordinator Pattern은 2015년, Soroush Khanlou가 The Coordinator라는 글을 쓰면서 시작됐다고 함
이 내용인 즉슨,
Massive ViewController의 가장 큰 문제 중 하나는, flow logic(흐름 로직) 및 business logic이 얽혀있다는 것
아래 예시를 보면서 이해해보자
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let object = self.dataSource[indexPath]
let detailViewController = SKDetailViewController(with: object)
self.navigationController?.present(detailViewController, animated: true, completion: nil)
}
어렵지 않은 코드임! TableViewCell을 터치했을 때의 이벤트를 didSelectRowAt 메소드 내부에서 지정해준 모습이라는 걸 알 수 있음
위 코드의 흐름은 아래와 같을 것임
별로 어렵지 않은 흐름일 것임! 우린 지금까지 줄곧 이런 방식을 사용해왔기 때문이겠지..
이런 코드는 간단한 앱에서는 아무 문제 없이 작동하지만, 앱이 복잡해진다면 ViewController가 새로운 방식 혹은 새로운 위치에서 사용될 수 있음
그럼 복잡한 앱이라고 생각하고 위의 코드를 다시 살펴보자