마틴 파울러의 의해 나온 MVP패턴에서 파생된 패턴으로 비지니스 로직과 프레젠테이션 로직을 UI로 부터 분리 하는 것이다.
비지니스 로직과 프레젠테이션 로직을 분리 하게 되면 유지 보수 측면에서 용이하고 테스트 하기 쉬워진다.
MVVM 패턴에서 VIewModel은 VIew에 연결될 데이터와 메서드를 구현하고 상태가 변화하게 되면 변경 알림 이벤트를 통해 VIew에게 상태 변화를 알려준다. View는 VIewModel의 상태 변화를 옵저빙한다. 옵저버 패턴을 사용하기 때문에 View는 ViewModel을 알지만 ViewModel은 View를 알지 못한다.
일반적으로 ViewModel과 View는 1:n 관계이다. 따라서 View는 자신이 이용할 ViewModel을 선택하여 상태 변화 알림을 받게 된다. ViewModel은 View가 쉽게 사용할 수 있도록 Model의 데이터를 가공하여 View에게 제공한다. 한마디로 ViewModel이란 View와 Model 사이에서 데이터를 관리하고 바인딩해주는 요소이다.
제일 큰차이는 ViewModel의 역할이다.
Pure MVVM ViewModel은 추상화 된 뷰 상태를 관리하고 AAC ViewModel은 뷰의 데이터 관리이다.
AAC(Android Architecture Components) ViewModel
MutableLiveData 데이터 List 갱신 하는 법
Pluu Dev - Android 상태 저장의 기본에서 Savedstate까지
livedata 자동완성 template
private val _$name$ = androidx.lifecycle.MutableLiveData<$generic$>($default$)
val $name$: androidx.lifecycle.LiveData<$generic$>
get() = _$name$