MVC/MVVM 둘 다 코드를 어떻게 나누어서 관리할 것인지에 대한 설계 약속이다.
MVC (Model - View - Controller)
구성 요소
Model
- 데이터 + 비즈니스 로직
- UI와 완전히 분리되어야 함
View
- 화면에 보여주는 역할만 수행
- UIKi의 UILable, UIButton 등
- 데이터 가공이나 판단하는 로직은 포함되지 않음
Controller
- View와 Model을 연결하는 중간 관리자
- 사용자 입력 처리
- 화면전환
- 데이터 -> 뷰 바인딩
MVC의 흐름
사용자 터치 - Controller - Model(데이터 변경) - Controller - View 업데이트
MVC의 장단점
장점
- UIKit의 기본 구조
- 비교적 배우기 쉬움
- 작은 앱에 유용함
단점
- ViewController가 비대해짐
- 테스트 어려움
MVVM (Model - View - ViewModel)
- MVC의 문제를 역할 분리로 해결하기 위한 구조
구성요소
Model
View
- UI와 사용자 입력까지 포함
- ViewModel에게 요청만 보냄
ViewModel
- View를 위한 데이터 가공 담당
- View가 쓰기 좋은 형태로 변환
- UI 로직을 여기에 포함
MVVM의 흐름
View - ViewModel - Model - ViewModel - View
MVVM의 장단점
장점
- ViewController 가벼워짐
- 테스트 용이
- UI 로직 명확
단점
- 구조가 처음에 어려움
- 파일 수 증가
- 바인딩 개념 필요