MVVM 패턴은 MVC 패턴에서 Controller를 제외하고 ViewModel을 추가한 패턴.
사용자가 보여지는 View를 생각하면 된다. 유저 인터렉션을 받는 역활, 인터렉션을 받을 시
ViewModel에게 명령을 내리는 패턴
MVVM 패턴의 장단점
간단한 UI에서 오히려 ViewModel을 설계하는 어려움이 있을 수 있습니다
데이터 바인딩이 필수적으로 요구됩니다
복잡해질수록 Controller처럼 ViewModel이 빠르게 비대해집니다
표준화된 틀이 존재하지 않아 사람마다 이해가 다릅니다
기존 성행했던 단순한 형태의 MVC 패턴에 따라 Activity 에 모든 코드를 다 집어넣으면 이런 단점들이 발생했다.
앱 동작이 많아질 수록 Activity 자체가 무거워 짐
View 와 Model 간의 의존성이 높아져 코드가 복잡해 짐
View 의 UI Refresh 를 위해 Model 을 참조하므로 앱 규모가 커질수록 코드가 복잡해 짐
단점들을 봤을 때, MVC 패턴은 규모가 커질수록 공통적으로 유지보수가 어려워진다는 단점이 존재한다.왜냐하면 MVC 패턴의 동작이 아래와 같기 때문이다.
https://velog.io/@haero_kim/Android-깔쌈하게-MVVM-패턴과-AAC-알아보기
View
- Activity / Fragment 가 View 역할을 함
- 사용자의 Action 을 받음 (텍스트 입력, 버튼 터치 등)
- ViewModel 의 데이터를 관찰하여 UI 갱신
ViewModel
- View 가 요청한 데이터를 Model 로 요청함
- Model 로부터 요청한 데이터를 받음
Model
- ViewModel 이 요청한 데이터를 반환함
- Room, Realm 과 같은 DB 사용이나 Retrofit 을 통한 백엔드 API 호출 (네트워킹) 이 보편적
MVVM 패턴은 다음과 같은 장점을 가진다.
이러한 장점을 가지고 있는 MVVM 패턴은 잘만 사용한다면 훌륭한 앱을 만들 수 있다.그렇지만 그만큼 구조가 복잡하다는 단점이 크게 다가온다. 진입장벽이 상당하다.
출처! : [https://velog.io/@haero_kim/Android-깔쌈하게-MVVM-패턴과-AAC-알아보기](https://velog.io/@haero_kim/Android-%EA%B9%94%EC%8C%88%ED%95%98%EA%B2%8C-MVVM-%ED%8C%A8%ED%84%B4%EA%B3%BC-AAC-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0)