viewmodel? AAC viewmodel? MVVM viewmodel?

도현욱·2023년 5월 20일

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개의 댓글