[Android] MVVM

MVVM Design Patern


[Design Pattern's Elements]

Model
  • Application의 Data인 DB, 상수, 변수등의 데이터를 의미한다.
  • Android에서는 Data Class나 Resource를 정의하는 Data가 이에 포함된다.
  • 이들은 데이터를 관리하기 위해 사용되는 요소들이다.
View
  • User Interface Elements
  • Model을 기반으로 한 사용자가 볼 수 있게 만든 화면을 의미한다.
  • Android에서는 Activity, Fragment등, 눈에 보이는 화면을 관리하는 것들이다.
Controller
  • Model과 View를 잇는 다리 역할을 하며, Main Logic의 역할을 한다.
  • Model과 View의 생명주기를 관리하며, 변경하상을 해석하여 전달한다.
  • Android에서는 코드의 흐름을 변경하는 함수들이 이에 해당한다.
ViewModel
  • View를 추상화하여 만든 계층이다.
  • View와 Model의 일정 역할을 띄어가서 만든 것들이다.

[MVVM]

MVC 패턴의 Controller가 ViewModel로 바뀐 패턴
특징
  • Command와 DataBinding을 가진다.
  • 이는 View와 ViewModel 사이의 양방향 DataBinding을 지원하며,
    별다른 수정 없이 재사용과 단위테스팅이 간단하다.