MVVM 패턴이란?
- Model-View-ViewModel의 약자이다.
- View와 Model 사이에 중간 레이어로 ViewModel을 두어 View와 Model의 결합도를 낮추어 유지보수성을 향상시킨다.
Model
- 데이터와 비지니스 로직을 담당하는 부분
- 데이터를 가져오고 저장하는 역할 수행
- 보통 데이터베이스, 네트워크 요청 또는 파일 시스템과 같은 여러 데이터 소스와 상호작용함
View
- 사용자 인터페이스를 담당하는 부분
- 사용자가 보는 화면을 표시하고, 사용자 입력을 처리
- 보통 마크업 언어를 사용하여 디자인됨
ViewModel
- View와 Model 사이에서 중재자 역할 수행
- View에서 발생하는 이벤트를 감지하고, 해당 이벤트에 맞는 비지니스 로직을 수행
- Model과 상호작용하여 데이터를 가져오거나 업데이트하고, View에 데이터를 업데이트
- View에 표시할 데이터를 가공하여 제공
MVVM 동작 과정
1. 사용자의 Action들이 View를 통해 들어온다.
2. ViewModel에 Action을 전달한다.
3. ViewModel은 Model에게 데이터를 요청한다.
4. Model은 ViewlModel에게 요청받은 데이터를 응답한다.
5. ViewModel은 응답받은 데이터를 가공하여 저장한다.
6. View는 Data Binding을 이용해 UI를 갱신시킨다.
MVVM vs MVP
언뜻 보기에 MVP와 비슷한 부분이 많다. 그러나 MVP는 View와 Presenter 사이의 의존관계가 1:1로 형성되어있다면, MVVM은 View와 ViewModel 사이의 관계가 1:n으로 되어있다. 또한 데이터 바인딩을 이용하면 View와 ViewModel 사이의 의존성을 없앨 수 있다.