Skip to content

About MVVM Concept

sery270 edited this page Aug 10, 2020 · 1 revision

Model 🍅🥬

View에 표시할 데이터 정의 담당

View에 표시할 데이터란?

Model에서 정의하고 ViewModel에서 처리한 데이터를 의미한다. View에서는 이 Model을 가져다 뿌리는 일 만 하게된다.

즉,

View는 보여주는 일, UI 부분만 담당하게 된다. 데이터는 가져가 뿌리기만 한다.

→ activity, fragment (UI)

Model은 View에서 보여질 데이터에 대한 정의, 틀을 담당한다.

→ data class


View 🍽🥣

UI 및 데이터 렌더링 담당

View 의 담당 영역 중, MVVM 관점에서 고려해야 할 부분?

  • 유저 인터렉션
  • 라이프사이클

원래는 View의 생명 주기 메서드 안에 코드를 넣어 구현 했는데, MVVM 상에선 이 데이터 정의 및 처리 부분과 렌더링 부분의 동작이 구분되어 있다.

따라서 MVVM 에선, 각 View의 생명 주기 메서드 안에서, 적절한 ViewModel 동작을 호출하는 방식으로 구현한다.

즉,

View는 순수히 UI 적인 부분만 담당하게 된다.

ViewModel은 View로부터 호출되어, 유저 인터렉션 및 라이프 사이클과 관련된 처리를 담당하게 된다.


ViewModel 👩🏻‍🍳🧑🏾‍🍳

View에 표시할 데이터 처리 및 사용자와의 인터렉션과 라이프 사이클 관련 처리 담당

View와 ViewModel간의 통신

항상 View가 ViewModel를 호출하고, ViewModel은 호출 받았을 때, 동작한다.

ViewModel이 View를 호출하지는 않는다.

그렇다면, 데이터 새로 고침 같은 기능은?

  • Data Binding

Data Binding은 어떠한 Subject를 두고 다른 객체들이 이를 구독하는 방식이다. 즉, Subject가 업데이트 되면 다른 객체들이 자동으로 바뀌게 되는 형식이다. 데이터를 새로고침하기 위해 ViewModel이 View를 호출하지는 않는다!

Data Binding 구현 방법

  • Android JetPack의 Data Binding
  • Observer 패턴의 Data Binding
  • RxJava2


참고

안드로이드의 MVVM에 대하여