1. MVVM - Model, View, ViewModel
What is MVVM?
Model - View - ViewModel의 3가지로 이루어져 있는 구조.
소프트웨어 아키텍처 패턴의 하나.
* 아키텍처 패턴 (architecture pattern)
주어진 문맥 안에서 소프트웨어 아키텍처의 공통적인 발생 문제에 대한 일반적인, 재사용 가능한 해결책을 의미. 디자인 패턴과 비슷하지만 더 넓은 범위에 속함.
Model
데이터와 데이터에 관련된 모든 행위
- DataModel 이라고도 불림
- ViewModel에서 데이터를 가져갈 수 있도록 데이터를 준비하고 이벤트를 보내는 역할
View
사용자에게 화면으로 보이는 모든 구조, 레이아웃
- View는 Model을 시각적으로 표현하고, 사용자의 상호작용을 받는다.
- data binding을 통해 입력들을 ViewModel에게 전달한다.
ViewModel
View의 추상화된 형태. View에 보여야 하는 데이터와 명령을 가지고 있음
- View가 ViewModel을 observe 하는 형태로 binding 되어있기 때문에, data의 갱신을 View가 자동으로 받을 수 있음
2. 안드로이드에서 MVVM 패턴이란?

각각의 컴포넌트는 서로 reference를 가지지 않고, [ View -> ViewModel -> Model ] 형태의 단방향 dependency를 갖는다.
-> 소프트웨어를 최대한 기능적으로 작은 단위로 나눈다!
-> 그에 따라 테스트가 쉬워지고 큰 프로젝트를 상대적으로 관리하기 좋아진다.
View
Activity, Fragment, CustomView, Menu, Dialog... 와 같은 UI 컴포넌트
- View는 UI 업데이트를 위해 ViewModel과 바인딩한다.
- ViewModel의 상태가 변경되면 그 이벤트를 받아 UI를 갱신한다.
- Permission과 관련된 처리, StartActivity 등 내비게이션 역할도 담당
Model
Network, DB, SharedPreferences 등 다양한 Data Source로부터 필요한 데이터를 준비
- ViewModel에서 데이터를 가져갈 수 있게 데이터를 준비하고, 그에 대한 '이벤트'를 보냄.
ViewModel
View와 Model 사이의 매개체 역할
- Model에서 제공받은 데이터를 UI에서 필요한 정보로 가공하여 View 가 가져갈 수 있게 데이터 변경에 대한 '이벤트'를 보냄
[참고사이트]
'Android' 카테고리의 다른 글
| [안드로이드] Databinding이란? (0) | 2021.05.28 |
|---|---|
| [안드로이드] LiveData란? (0) | 2021.05.20 |