반응형
🔹 Coordinator 패턴이란?
Coordinator 패턴은 화면 전환 및 기능 흐름을 별도의 관리 객체(Coordinator) 에게 위임하여
ViewController 간의 강한 결합도를 줄이고, 코드의 유지보수를 쉽게 만드는 패턴입니다.
이 패턴은 특히 복잡한 화면 전환이 필요한 앱에서 유용하며,
모든 화면 이동을 한 곳에서 관리함으로써 유지보수성과 확장성을 높일 수 있습니다.
🔹 왜 Coordinator 패턴이 필요한가?
iOS 개발에서 화면 전환을 직접 관리하는 방식은 유지보수가 어렵습니다.
예를 들어, 일반적인 방식에서는 각 ViewController가 pushViewController 또는 present를 직접 호출하며,
새로운 화면이 추가될 때마다 모든 관련 코드를 수정해야 합니다.
이로 인해 발생하는 문제점은 다음과 같습니다.
❌ 기존 방식의 문제점
- 모든 화면에서 직접 화면 전환을 처리해야 함
ViewControllerA가ViewControllerB로 이동할 때 직접pushViewController를 호출- 앱이 커질수록 ViewController 간의 의존성이 높아짐
- 화면 이동 흐름을 변경하기 어렵다
- 예를 들어,
A → B경로를A → C → B로 변경해야 하면A뿐만 아니라B에서도 관련 코드를 수정해야 함
- 예를 들어,
- 중복 코드가 많아짐
- 여러 ViewController에서 동일한 화면 이동 로직이 중복될 가능성이 큼
🔹 Coordinator 패턴의 핵심 개념
Coordinator 패턴은 "화면 전환을 한 곳에서 관리" 하는 방식입니다.
각 화면은 화면 전환을 직접 처리하는 대신, Coordinator 객체에게 요청하여 다음 화면으로 이동합니다.
📌 Coordinator 패턴의 주요 특징
- 화면 전환 로직을 한 곳에서 관리
ViewController내부에서 직접pushViewController를 호출하지 않음- 화면 이동 로직을 Coordinator가 전담
- 화면 흐름을 변경하기 쉬움
- 새로운 화면이 추가될 때 Coordinator만 수정하면 됨
- ViewController 간의 결합도를 낮춤
- 각 ViewController는 다른 화면을 몰라도 동작할 수 있음
🔹 Coordinator 패턴의 동작 방식
- 앱의 주요 흐름을 정의하고, 각 화면을 담당하는 Coordinator를 설계
- 각 ViewController는 직접 화면을 전환하지 않고, Coordinator에게 요청
- Coordinator가 화면 흐름을 관리하고, 필요한 경우 다른 Coordinator에게 제어권을 넘김
🔹 Coordinator 패턴 적용 시 장점
✅ 유지보수가 쉬움
- 화면 흐름이 바뀌어도 Coordinator만 수정하면 됨
✅ 화면 간 결합도를 낮출 수 있음 ViewControllerA는ViewControllerB의 존재를 몰라도 됨
✅ 화면 전환 로직을 중앙에서 관리 가능- 모든 화면 이동이 한 곳에서 관리되어 흐름을 쉽게 파악 가능
✅ 확장성이 뛰어남 - 새로운 화면을 추가할 때 Coordinator만 수정하면 되므로 확장이 용이
🔹 Coordinator 패턴이 유용한 경우
💡 1. 화면 흐름이 복잡한 앱
- 로그인 → 메인 화면 → 기능 수행 → 결과 → 홈으로 돌아가기 등의 구조
💡 2. 기능 단위로 화면 흐름을 관리해야 하는 경우 - 특정 기능 내에서 여러 단계의 화면 이동이 필요한 경우
💡 3. 유지보수가 쉬운 코드 구조를 만들고 싶은 경우 - 화면 추가 및 수정이 용이한 아키텍처가 필요할 때
🔹 결론: Coordinator 패턴을 사용해야 하는 이유
Coordinator 패턴은 iOS 앱의 화면 전환을 체계적으로 관리할 수 있는 방법입니다.
특히 앱이 커질수록 유지보수가 어려워지는 문제를 해결하는 데 도움이 됩니다.
✅ 화면 전환을 한 곳에서 관리하여 유지보수가 쉬움
✅ ViewController 간 의존도를 줄여 코드가 깔끔해짐
✅ 새로운 화면 추가 및 변경 시 수정해야 할 코드가 최소화됨
반응형
'iOS > Swift' 카테고리의 다른 글
| Coordinator 패턴을 활용한 화면 전환 관리 비교 (0) | 2025.03.16 |
|---|---|
| Coordinator 패턴을 적용한 앱 예제 (0) | 2025.03.16 |
| [Swift] 자식 뷰컨트롤러에서 dismiss를 적용하면? (0) | 2023.05.31 |
| [Swift] Size Class (0) | 2023.01.16 |
| [Swift] 기기에 따른 화면 오토레이아웃 구성 (0) | 2023.01.15 |