본문 바로가기

안드로이드 스튜디오

[안드로이드 스튜디오] MVVM 패턴

728x90
반응형

 

 

 

 

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 

 

앱 아키텍처 가이드  |  Android 개발자  |  Android Developers

앱 아키텍처 가이드 이 가이드에는 고품질의 강력한 앱을 빌드하기 위한 권장사항 및 권장 아키텍처가 포함되어 있습니다. 참고: 이 페이지는 Android 프레임워크 기본을 잘 아는 사용자를 대상으

developer.android.com

 

 

 

 

LiveData

https://developer.android.com/topic/libraries/architecture/livedata?hl=ko 

 

LiveData 개요  |  Android 개발자  |  Android Developers

LiveData를 사용하여 수명 주기를 인식하는 방식으로 데이터를 처리합니다.

developer.android.com

 

 

 

 

728x90
반응형