250x250
반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

수니의 개발새발

[iOS/Swift] Coordinator 패턴의 이해 본문

iOS - Swift

[iOS/Swift] Coordinator 패턴의 이해

개발자 수니 2024. 5. 16. 17:46
728x90
반응형

Coordinator 패턴의 이해

*Soroush Khanlou*가 NSSpain conference 2015에서는 Coordinator의 설명

So what is a coordinator? A coordinator is an object that bosses one or more view controllers around.
코디네이터란? 하나 이상의 View Controller에게 지시하는 object이다. 

여기서 말하는 지시는 화면 전환에 대한 지시.

 

Coordinator는 ViewController 간의 흐름을 제어한다.

즉, ViewController의 Navigation의 책임을 별도의 객체(Coordinator Classs)로 분리한다.

 

Coordinator 기능

- 화면 전환에 필요한 인스턴스 생성(ViewController, ViewModel 등..)

- 생성된 ViewControll의 화면 전환 (push/present..)

 

Coordinator의 이점  : 유지보수성, 재사용성, 독립성

let vc = DetailViewController()	// 상세 페이지 뷰 컨트롤러
vc.id = detailId	// 상세 페이지 Id 전달
navigationController?.pushViewController(vc, animated: true)

기존 프로젝트

- ViewController의 전환이 필요할 경우, 위와 같은 코드를 반복적으로 사용한다. (이러한 화면 이동 코드들은 대부분 ViewController 내부에서 작성된다.)

- 화면 이동 기능에 대한 책임을 ViewController 가 가지게 되고 이동하는 ViewController 간 의존성이 생긴다. 이는 ViewController의 재사용성이 떨어진다.

- 만약 유지보수를 하면서 ViewController 간의 데이터 전달이 추가되면 해당 코드를 모두 찾아 변경하는 작업이 필요하다.
(ex. "상세 페이지 이동 코드에 userId 도 전달해주세요~" -> 상세 페이지 이동 코드가 프로젝트에 10개가 넘는데...🤯)

 

Coordinator 패턴 프로젝트

- 화면 전환과 관련된 사항을 수정할 때 ViewController에서 일일이 찾지 않고 바로 Coordinator 객체를 보러 가면 된다. 👍

- Navigation 책임을 독립시킨다.

- ViewController의 재사용성이 높아지고, 유지보수성이 높아진다.

 

 

 

 

 

🙋🏻‍♀️ 참고

간단한 예제로 살펴보는 iOS Design/Architecture Pattern: Coordinator - Basic

[iOS] Coordinator Pattern

728x90
반응형
Comments