728x90

MVC vs MVVM

MVC

각 요소들의 역할

  • Model : 데이터를 저장 및 가공
  • View : Model이 갖고 있는 데이터를 시각화하여 표현
  • Controller : Model과 View 모두에게 관여하며, Model 통해 데이터를 제어하고, 데이터가 변경될 때마다 View를 업데이트

흐름

  1. 사용자의 액션은 Activity/Fragment가 받음
  2. Activity/Fragment는 이를 확인하고 필요한 경우 Model에 업데이트
  3. Model로 부터 전달받은 데이터를 통해 View를 업데이트

View를 나타내는 Activity/Fragment Controller의 역할까지 맡고 있음

장점

  • 굉장히 단순하고 직관적

단점

  • Controller 규모가 커진다
  • 가독성
  • 컨트롤러 하나가 여러 model?(데이터 소스)로 부터 의존성을 갖게 됨
  • 유지 보수가 어려워짐
  • UI 노출에 걸리는 시간 오래걸린다

MVVM

각 요소들의 역할

  • Model : 데이터를 관리
  • View : 화면에 데이터를 표시
  • ViewModel : Model 데이터를 요청하고 UI(View)를 위한 데이터를 가공하는 역할

흐름

  1. 사용자의 액션은 View가 받음
  2. 들어온 액션은 ViewModel로 전달되며, ViewModel은 Model 에게 데이터를 요청
  3. Model은 ViewModel에게 요청받은 데이터를 전달하고
  4. ViewModel은 응답받은 데이터를 가공하고 저장
  5. View는 ViewModel를 관찰 하고 변경된 데이터를 화면에 나타냄

(Model은 Network(Retrofit), Local DB(Room) 통신을 말함)

+ Recent posts