이번에 진행 중이던 프로젝트에 함께하게 되었다. 진행 중이던 프로젝트 패키지 구조를 보니 MVC 패턴이 아닌 MVVM 패턴을 사용 중이었다. 사실 MVVM 패턴은 이전에 한번 사용해 보았는데 내용도 잘 모르고 다른 개발자가 짜준 코드를 보면서 작성해서 이번 기회에 정리해 보려고 한다.
MVVM패턴은 Model, View, ViewModel의 약자이다.
- Model
- MVC 패턴과 동일하게 데이터를 가지며 애플리케이션에서 비즈니스 로직과 사용되는 데이터 처리
- View
- 사용자에게 보이는 화면
- Activity, Fragment, .xml 모두
- ViewModel
- View에 필요한 데이터를 Model로부터 가져와 처리하고 데이터를 View에 보여주기 위한 역할
- 화면 변화에도 사라지지 않는 UI를 위한 데이터를 가지고 있음
- LiveData와 DataBinding 라이브러리를 사용하면 View와의 의존성 감소
- ViewModel 라이브러리(AAC ViewModel)을 사용하면 UI 관련 데이터의 수명주기 관리에 용이
➡️ MVC 패턴은 안드로이드에 적용할 때 View와 Control이 모두 Activity에서 처리되어 Activity가 커지는 문제 발생
➡️ MVVM 패턴은 View와 Model을 분리하고 View가 다시 생성되어도 ViewModel을 통해 데이터 유지 가능