MVVM은 (Model-View-ViewModel) 아키텍쳐 패턴이다.
<구성>
- Model : 데이터와 데이터를 가져오는 로직으로, ViewModel에서 요청하는 값을 반환한다.
- View : 사용자에게 화면으로 보여지는 레이아웃을 View라고 한다(dataBinding을 통해 입력을 ViewModel에게 전달),이벤트를 발생시켜 데이터를 요청한다. => Activity, Fragment (View는 UI에 집중할 수 있음)
- ViewModel : View의 추상화 된 형태로, data의 갱신을 View가 자동으로 받을 수 있게 되어있다, View에서 받아온 데이터를 Model로 요청한다. (데이터 변환을 담당한다)
<구조>
양방향이 아니라 View -> ViewModel -> Model 형태의 단방향 구조이다.
<동작 순서>
사용자의 Action들이 View를 통해 들어온다.
↓
View에서 ViewModel로 action을 전달(Command패턴으로)
↓
ViewModel에서 비즈니스 로직 수행
↓
ViewModel은 Model에게 데이터 요청
↓
Model은 ViewModel에게 요청받은 데이터를 응답
↓
ViewModel은 응답 받은 데이터를 가공해 저장
↓
ViewModel은 DataBinding을 통해 View를 수정하여 화면에 나타냄
<특징>
MVVM은 Command패턴과 DataBinding 두 가지 패턴을 사용하며 구현한다.
(1). Command패턴
- 커맨드 패턴이란 요청을 객체의 형태로 캡슐화하여 사용자가 보낸 요청을 나중에 이용할 수 있게 매서드 이름, 매개변수 등 요청에 필요한 정보를 저장 또는 로깅, 취소할 수 있게 하는 패턴이다
(2). DataBinding
- xml파일에 Data를 연결해서 사용할 수 있게 도와주는 JetPack 라이브러리이다.
<AAC>
AAC (Android Architecture Component)에서 기본적으로 구성 요소를 제공해주기 때문에, MVVM을 더 쉽게 사용할 수 있다.
- AAC 종류
- Room : 안드로이드 앱의 내부 저장소(DB)를 사용하기 위한 라이브러리이다.
- LiveData : 앱 구성요소에 수명 주기를 따르며 Observer 패턴을 사용하여 데이터를 관리해준다.
- ViewModel : Android의 생명 주기를 고려하여 UI 관련 데이터를 저장하고 관리한다.
=> AAC의 ViewModel과 MVVM의 ViewModel은 다르다. 이름만 같을 뿐 !
MVVM ViewModel은 View에 필요한 데이터를 관리하고 바인딩해주고, AAC의 ViewModel은 수명 주기를 고려하여 UI에 관련된 데이터를 저장하고 관리한다.
AAC
https://developer.android.com/jetpack/guide?hl=ko
LiveData
https://developer.android.com/topic/libraries/architecture/livedata?hl=ko
'안드로이드 스튜디오' 카테고리의 다른 글
[안드로이드 스튜디오 코틀린] JavaScript와 연결해주는 Android Bridge - Kotlin 정리 (0) | 2022.06.28 |
---|---|
[안드로이드 스튜디오 코틀린] WebView에서 카메라 설정 (0) | 2022.06.09 |
[안드로이드 스튜디오] Figma로 Layout 디자인하기 ! (1) | 2022.05.23 |
[안드로이드 스튜디오] RxJava에 대해 알아보자 (0) | 2022.05.16 |
[안드로이드 스튜디오] Dagger2는 무엇인가? (0) | 2022.05.15 |