-
iOS [Swift] - Coordinator Pattern (1)iOS Develop 2022. 12. 19. 17:09반응형
오늘은 무심코 코딩을 하다가 UINavigationController를 대체할 무언가에 대한 궁금증으로 시작하여
Coordinator 패턴에 대해 학습을 하고 블로깅을 해보려고 한다. :)
Coordinator Pattern 의 등장 배경
나는 평소에 화면 전환을 할 때, UINavigationController를 자연스럽게 많이 사용하곤 했다.
그러다 현업에서 일을 하다보니 선배님들의 코드에는 생각보다 UINavigationController가 많이 쓰이지 않았다.
내가 주로 사용하던 UINavigationController는 편하게 사용이 가능하고 접근성이 쉽지만, 앱의 크기가 커질수록 버거워질 수 밖에 없을 것이다. 새로운 화면이 쌓일 때마다 무거워지고 스택이 쌓이기 때문이다. 또, ViewController에 대한 의존도가 너무나도 커지고 그에 대한 역할이 커지는 것도 있을 것이다.
Massive한 ViewController의 가장 큰 문제점은 로직들이 엄청나게 엉켜있다는 점이다.
그렇기에 점점 관리가 힘들어지고 이런 문제점을 해결하기 위해서,
화면 전환을 독립적인 Class에서 관리할 수 있는 Coordinator Pattern 이 등장하게 된다.
Coordinator Pattern의 특징
- Coordinator Pattern은 화면 전환의 흐름을 제어하기 때문에, 기존 ViewController가 담당해왔던 책임을 대신 맡게된다.
- Coordinator Pattern은 화면 전환 제어하는 것을 담당하고, 의존성 주입(DI)를 가능케 해주는 중간 역할을 한다.
- 기존 Massive ViewController보다 수준 높은 관리를 통해, 안정적으로 로직을 관리할 수 있다.
- 기존 Massive ViewController는 ViewController간 의존도가 컸을텐데, Coordinator는 ViewController간 강한 결합도를 완화시켜줄 수 있다.
- 결론적으로 유지보수하는 것에 큰 이점이 있고, ViewController가 View의 역할에만 집중할 수 있게 된다.
- 모든 Coordinator는 하위 Coordinator가 있기 때문에,
(ViewController에서 버튼을 클릭하면 상위 Coordinator에 알려주고, 그 Coordinator는 보다 상위의 App Coordinator에게 행위에 대한 처리를 알려준다. App Coordinator는 다른 화면으로 전환을 시켜주는 등의 처리를 할 수 있다.)
오늘은 Coordinator Pattern에 대해 짧게 나마 살펴보았습니다. 부족한 점은 알려주시면 감사하겠습니다 :)
다음 포스팅에서는 Coordinator Pattern을 적용해보는 사례를 정리해보겠습니다. 🤩
'iOS Develop' 카테고리의 다른 글
iOS [Swift] - FileManager를 이용해서 파일 다운로드 후 저장하기 (0) 2023.01.18 오픈 소스 공유 - Sliding Tab Bar (0) 2022.12.26 iOS [Swift] - Delegate로 State Observing하기 (0) 2022.12.02 iOS [Swift] - Promises (0) 2022.12.02 iOS [SwiftUI] - @EnvironmentObject 사용하기 (0) 2022.09.28