본문 바로가기
개발/Android

[Android] MVVM 패턴 및 Clean Architecture, Android Jetpack 적용 예제

by tempus 2022. 11. 2.
반응형

개요

이번 포스팅에서는 Android에서 많이 애용하는 설계 패턴인 MVVM과 Clean Architectrue, Android Jetpack을 사용하여 만든 프로젝트를 소개하려고 합니다. Open API의 한 종류인 omdbapi를 사용하여 만들었습니다. 로그인 시 하루에 1,000건까지 무료로 사용할 수 있습니다. 

 

https://www.omdbapi.com/

 

OMDb API - The Open Movie Database

 

www.omdbapi.com

프로젝트 Preview

해당 프로젝트의 이름은 MovieBrowser이고 간단한 영화 검색 기능과 즐겨찾기 기능을 사용할 수 있습니다.

 

프로젝트에 Clean Architecture를 적용하였고 각 Layer는 다음과 같은 종속성을 가지고 있습니다. 

 

각 계층의 의존성
  1. Data와 Domain Layer는 서로 다른 모델을 사용하고 mapping을 통해 서로 객체를 변환합니다. (따로 mapper 클래스를 두지 않음)
  2. Data의 model은 서버나 DB에서 제공하는 모델들의 스키마와 같으면 좋습니다.
  3. ViewModel은 DI 부분을 제외하고 Android 라이브러리를 사용하지 않는 것이 좋아서 kotlin flow를 사용했습니다.
  4. LiveData 대신 StateFlow를 사용하였습니다.

 

프로젝트 내 Data 흐름

Data Flow

(1) Network나 DB에서 데이터를 받아옵니다.

(2) Repository(domain)을 구현한 Repository implementation(data)에서 이를 injection을 받습니다.

(3) 그리고 도메인의 각 기능을 하는 유즈케이스를 작성합니다. (ex : GetMoviesUseCase)

(4) 각 유즈케이스를 필요한 viewModel에게 주입합니다.

(5) 최종적으로 데이터 바인딩을 이용하여 해당 뷰와 데이터를 묶어줍니다.

 

사용한 라이브러리

  • Kotlin Coroutines
  • Kotlin Flow
  • Dagger Hilt
  • Retrofit
  • Gson
  • Navigation Component
  • DataBinding
  • LifeCycle
  • Room
  • Glide

 

해당 프로젝트 Github

https://github.com/ArdorHoon/MovieBrowser

 

GitHub - ArdorHoon/MovieBrowser

Contribute to ArdorHoon/MovieBrowser development by creating an account on GitHub.

github.com

 

반응형

댓글


loading