- MVVM (Model - View - ViewModel)
- Model : 데이터 구조 표현 및 데이터 저장. 예를들어 연락처 앱의 PhoneBook 구조체.
- View: 유저에게 UI 를 표현하기 위한 요소 + 사용자 입력 처리. 예를들어 UIButton , UITableView , UIViewController 모두 View 에 포함됨.
- ViewModel : View 와 Model 의 중재자. 하지만 유저 액션을 받지 않으며, View 가 ViewModel 을 관찰하며 UI 를 업데이트한다. 이를 데이터 바인딩이라고도 한다. ViewModel 에서 갖고 있는 데이터를 View 에서 관찰하며 변경 사항이 일어났을 시 이를 View 에 적용한다. (옵저버 패턴 활용) ViewModel 은 View 의 존재를 정확히 몰라도 된다.
MVVM 특징
- UI 로직과 비즈니스 로직의 분리.
- UI 로직: 뷰를 그리는 로직
- 비즈니스 로직: UI 로직이 아닌 앱의 기획사항에 따른 데이터 흐름을 처리하는 로직.
- UI 로직과 비즈니스 로직의 분리가 일어났다는 것은 테스트 코드를 작성하기 용이하다는 것과도 같음.
- UIViewController 의 책임이 MVC 때보다 덜어짐. 예를 들어, 네트워크 통신 코드는 사실 UI 와 관련없는 비즈니스 로직이기 때문에 View 이 아닌 ViewModel 안에 코드 작성. 그리고 ViewModel 에서 네트워크 통신의 결과로 무언가 값을 받으면, 내부 Publihser 에 이벤트를 발행시키고, View 는 그것을 구독하고 관찰하고 있다가 캐치해서 반영.
'Swift' 카테고리의 다른 글
Xcode Instruments (0) | 2024.07.31 |
---|---|
다시 한 번 돌아보는 제네릭 (0) | 2024.07.30 |
Swift 싱글톤 패턴 (0) | 2024.07.14 |
(CS) 네트워크 대비 지식쌓기 (2/2) (0) | 2024.07.12 |
Swift UserDefaults (0) | 2024.07.11 |