안드로이드 MVVM 패턴 공부기록

 

|패턴|

 

패턴이란 소스 코드들을 각 역할에 따라 구조화하며 나누는 것을 말한다.

 

안드로이드로 프로젝트를 개발할 때 다양한 패턴을 사용한다.

패턴을 사용하면 유지보수가 쉬워지며, 뷰와 모델의 의존성을 분리할 수 있다.

안드로이드에서는 주로 MVC나 MVP 패턴, MVVM 패턴을 사용한다.

 

|MVC 패턴|

 

MVC 패턴은 Model, View, Controller 패턴이다.

 

Model : 출력할 데이터와 행동을 갖는 객체

View :  데이터를 시각화하는 부분 

Controller : 사용자 요청을 해석하여 처

 

중심을 담당하는 View와 Controller 모두 Activity에서 처리되기 때문에 Acitivity가 커지는 문제가 발생한다.

 

 

|MVP 패턴|

 

MVP 패턴은 Model, View, Presenter 패턴이다.

View와 Model이 Presenter를 통해서만 동작하며, MVC 패턴과 매우 유사하다.

 

 

MVC 패턴의 View와 Model의 결합도가 높다는 문제점을 보완하기 위해서 만들어졌지만,

Presenter가 뷰와 1:1로 동작하기 때문에 의존성이 강해지는 문제가 발생한다.

이를 통해서 Presenter의 로직이 비대하게 커지는 문제도 발생한다.

 

 

|MVVM  패턴|

 

앞의 두 가지 패턴의 문제점을 보완하기 위해서 사용한다.

뷰와 모델을 충분히 분리할 수 있으며, 화면 회전 등의 동작에도 데이터를 유지하는 이점이 있다.

 

Model, View, ViewModel로 구성된다.

 

 

위와 같은 구조를 가지는데, View에서는 ViewModel에 접근, ViewModel에서는 Model로 접근이 가능하게 한다.

 

현재 개발 중인 프로젝트를 살펴보면, 

 

 

[View를 담당하는 MainFragment]

 

UI를 표시하고 사용자 이벤트를 받는 역할

 

 

 

[Model을 담당하는 Model]

 

전반적인 데이터를 처리하는 역할

 

 

[ViewModel을 담당하는 ViewModel]

 

UI 요소에 들어갈 데이터를 관리하는 다리 역할

 

 

 

3가지 구조로 나눠서 개발을 진행 중이다.

이러한 구조를 사용하면 여러 장점을 얻을 수 있다.

 

|MVVM  패턴의 장점|

 

1. View가 View Model의 데이터를 관찰하므로 간편한 UI 업데이트

 

2. ViewModel이 데이터를 관리하므로 Memory Leak 위험성 감소

- view가 직접 model에 접근하지 않아서 activity나 fragment의 라이프 사이클에 의존하지 않는다.

 

3. 기능별 모듈화가 잘 유지되어 유지 보수에 용이 

- ViewModel을 재사용하거나 DB 교체 등의 작업이 편리하다.

 

 

|MVVM  패턴의 단점|

 

MVVM 패턴은 좋은 디자인 패턴이지만 구조가 복잡하다는 단점이 있다고 한다.

이를 위해서 AAC 등의 패턴을 사용하기도 하는데 자세한 내용은 아래 공식 문서에서 확인할 수 있다.

 

 

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

 

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

앱 아키텍처 가이드 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 가이드에는 고품질의 강력한 앱을 빌드하기 위한 권장사항 및 권장 아키텍처가 포함

developer.android.com