728x90
MVC vs MVVM
MVC
각 요소들의 역할
- Model : 데이터를 저장 및 가공
- View : Model이 갖고 있는 데이터를 시각화하여 표현
- Controller : Model과 View 모두에게 관여하며, Model 통해 데이터를 제어하고, 데이터가 변경될 때마다 View를 업데이트
흐름
- 사용자의 액션은 Activity/Fragment가 받음
- Activity/Fragment는 이를 확인하고 필요한 경우 Model에 업데이트
- Model로 부터 전달받은 데이터를 통해 View를 업데이트
View를 나타내는 Activity/Fragment가 Controller의 역할까지 맡고 있음
장점
- 굉장히 단순하고 직관적
단점
- Controller 규모가 커진다
- 가독성
- 컨트롤러 하나가 여러 model?(데이터 소스)로 부터 의존성을 갖게 됨
- 유지 보수가 어려워짐
- UI 노출에 걸리는 시간 오래걸린다
MVVM
각 요소들의 역할
- Model : 데이터를 관리
- View : 화면에 데이터를 표시
- ViewModel : Model 데이터를 요청하고 UI(View)를 위한 데이터를 가공하는 역할
흐름
- 사용자의 액션은 View가 받음
- 들어온 액션은 ViewModel로 전달되며, ViewModel은 Model 에게 데이터를 요청
- Model은 ViewModel에게 요청받은 데이터를 전달하고
- ViewModel은 응답받은 데이터를 가공하고 저장
- View는 ViewModel를 관찰 하고 변경된 데이터를 화면에 나타냄
(Model은 Network(Retrofit), Local DB(Room) 통신을 말함)