[Android] MVVM 패턴이란?! (feat. 예제 소개)
※ 안드로이드의 아키텍처 MVVM 을 공부해보자!
[들어가기]
※ 디자인 패턴을 생각하게 된 이유
안드로이드 개발을 하면서 어떻게 구조화를 할지, 설계 단계에서 시간을 많이 안 쏟았던 것 같다. 해커톤과 같은 짧은 기간 내에 프로젝트를 진행하며(SOPT APPJAM) 모든 것을 완벽하게 구현해야한다는 급박함이었을까?
이제는 좀 더 구조적이고 모듈화된, 깔끔하고 유지보수가 쉬운 코드를 짜보려한다.
※ 어떻게 진행될까?
- 간단한 프로젝트와 함께 MVVM을 적용해보자
- MVVM 구조에 대해 정확한 이해와 고민을 해보는 시간을 갖자
- 더 나아가, DI, Coroutine, DataBinding, RxJAVA 등을 프로젝트에 적용해보자
[시작하기]
1. MVVM 이란?
MVVM은 2005년에 John Gossman에 의해 소개된 디자인 패턴으로 Model-View-ViewModel의 약자다. MVC, MVP 패턴등의 단점을 보안하기 위해 나왔다.
View에서는 UI의 관련된 일만, ViewModel은 View에 관련된 로직들을 처리하는 일, Model은 데이터 처리 담당을 한다.
2. MVVM 은 어떻게 구성되는가?!
일단, ※관심사 분리!※ 를 해야한다
① VIEW
- Activity 나 Fragment 와 같은 UI 기반의 클래스는 UI 및 운영체제 상호작용을 처리하는 로직만 포함해야 한다.
- 최대한 가볍게 유지하며 생명주기 관련 문제를 피하도록 하자.
② MODEL
- 앱의 데이터를 처리를 담당
- View와는 독립적이여야 하며, 생명주기에는 영향을 받지 않도록 한다.
- 네트워크 연결이 취약하거나 연결이 되어있지 않아도 앱은 실행되고 돌아가야 한다.
③ VIEWMODEL
- View와 Model을 연결시키는 역할
- View와 관련된 모든 비즈니스 로직은 이 곳에 들어간다.
- 데이터를 잘 가공해서 View에서 뿌리기 쉬운 Model로 바꾸는 역할을 한다.
** MVVM이 모든 상황에서 적합한 구조는 아닐 수 있다. 그 상황에 맞게 최선의 방법을 생각하고 구현하기!
<앞으로의 간단한 예제 소개>
- Chatting 뷰, PartnerInfo 뷰 2가지로 구성한다.
- 1 : 1 대화 상황 하나만 있다고 가정한다.
- RoomDB를 통해 이전 대화내용들을 저장하고 앱에 접근했을 때, 내용들을 뷰에 보여준다.
[참고]
https://poqw.github.io/about_mvvm/
공식문서 : https://developer.android.com/jetpack/docs/guide?hl=ko
lifecycle : https://codelabs.developers.google.com/codelabs/android-lifecycles/index.html?hl=ko#6
'ANDROID > ARCHITECTURE' 카테고리의 다른 글
[Android] ROOM Database 라이브러리 사용하기! (MVVM-2) (0) | 2020.06.27 |
---|