Dev Tools/android studio

Android Clean Architecture

JaeHyunShin 2020. 12. 31. 10:48

일단, 디자인 패턴으로 MVVM이 가지는 의미를 말로 풀어보겠다.

 

MVVM은 Model-View-ViewModel의 약자이다.

 

Model은 UI에 표시될 데이터와 비즈니스 로직을 담당하고, View는 UI를 의미하며, ViewModel은 이벤트 처리나, Model과의 인터랙션을 담당한다.

 

MVVM의 각 레이어간에 어떤 식으로 인터랙션이 이루어지는지, 간단하게 도식화된 그림으로 살펴보자.

 ViewModel이 Model을 가공해 View에 전달하고, 데이터 바인딩을 통해서 작업이 끝난 후에 View를 이에 맞추어 바꿔준다.

Data Binding은 View에 관한 로직과 비즈니스 로직을 구분하는 데에 중요한 역할을 한다.

이를 이용하여 View가 오로지 수동적인 포지션을 취할 수 있고, ViewModel이 View의 존재를 알지 못하게 하여 플랫폼 의존성에서 벗어날 수 있게 해준다. 

 

MVVM으로 실제 서비스 개발에 적용해보진 못했다. 서비스 중인 앱은 MVP로 되어 있으며, 사실 요구 사항에 맞는 구조기도 했다. 

 

그래서 습관빵 앱 개발에 MVVM을 도입할 때 고민은 ~

 

AAC 없이도 MVVM 구조를 만들 수 있다. 하지만, 귀찮은 LifeCycle 관리를 해줘야 한다. 

 

Room database는 안드로이드에 내장된 SQLite를 통한 데이터베이스 사용에 도움을 주는 AAC 라이브러리이다.

 

하지만 습관빵 앱은 로컬 데이터베이스(Room, SQLite)를 쓸 필요가 없다.->SharedPreference로 해결!

 

코드로 구체적으로 살펴보면, Jetpack AAC(Android Architecture Componenets)를 이용하기 위해서는 기본 안드로이드 개발지식이 필요하다. 

 

 

 

 

 

그림 출처: wnstkdyu.github.io/2018/04/20/mvvmdesignpattern/