viewmodel? AAC viewmodel? MVVM viewmodel?

도현욱·2023년 5월 20일
1

AAC viewmodel과 MVVM viewmodel이 같은것인지 다른것인지 햇갈려 하는 사람들이 많고 다르단는 것을 알아도 정확히 어떤 것이 다른지 모르는 사람들을 위해서 이번 개시물을 준비했습니다.

viewmodel이라 하면 AAC viewmodel과 MVVM viewmodel로 나눌 수 있습니다.

먼저 AAC(Android Architecture Components) viewmodel 이라 함은 쉽게 말해 상태 변화가 일어나는 UI와 관련한 데이터를 라이프 사이클에서 유지하는 클래스다.

예를 들어 화면을 클릭할 때 마다 숫자가 1씩 올라가는 간단한 프로그램을 만들었다고 치자. 이런 프로그램을 만들면 화면 전환을 하였을 때 다시 숫자가 0이 될 것이다. 왜냐하면 화면이 회전될 경우 안드로이드 라이프 사이클이 다시 시작되기 때문에 기존에 저장하고 있던 값들이 사라진다. 이를 해결하기 위해서 AAC viewmodel을 쓸 수 있다. 물론 이 방법밖에 없는 것은 아니지만 AAC viewmodel을 사용하면 해결 할 수 있다.

그 다음으로 MVVM viewmodel이라 함은 MVVM design pattern에서 UI를 표시하는 View와 DB, Network 등에서 값을 받아오는 Model 을 연결해주는 역할을 한다. Model에서 온 값을 가공해서 View에 전달해 주는 것이다.

보완

그러나 AAC viewmodel을 MVVM viewmodel 처럼 Model과 View 중간 매체 역할로도 사용할 수 있다. 그러나 AAC viewmodel은 싱글톤 개념이라서 한 Activity에 하나의 viewmodel 밖에 존재할 수 없다. 무슨 말이냐면 한 Activity가 여러 Fragment를 가질 경우 AAC viewmodel을 MVVM viewmodel 처럼 사용하는 것은 힘들다. 그러나 MVVM viewmodel은 1:n의 관계를 가지기에 한 Activity에 여러 Fragment가 있더라도 전부 대응이 가능하다.

결론

AAC viewmodel과 MVVM viewmodel은 절대 같은 것이 아님, 단지 이름만 비슷한거일 뿐 AAC viewmodel Activity가 destory 되기 까지 한 생명주기를 가지는 것이고 MVVM viewmodel은 View 와 Model의 중간다리 역할을 하는 것임.

profile
android 개발자를 꿈꾸며

0개의 댓글