반응형
개요
이번 포스팅에서는 Android에서 많이 애용하는 설계 패턴인 MVVM과 Clean Architectrue, Android Jetpack을 사용하여 만든 프로젝트를 소개하려고 합니다. Open API의 한 종류인 omdbapi
를 사용하여 만들었습니다. 로그인 시 하루에 1,000건까지 무료로 사용할 수 있습니다.
해당 프로젝트의 이름은 MovieBrowser
이고 간단한 영화 검색 기능과 즐겨찾기 기능을 사용할 수 있습니다.
프로젝트에 Clean Architecture를 적용하였고 각 Layer는 다음과 같은 종속성을 가지고 있습니다.
- Data와 Domain Layer는 서로 다른 모델을 사용하고 mapping을 통해 서로 객체를 변환합니다. (따로 mapper 클래스를 두지 않음)
- Data의 model은 서버나 DB에서 제공하는 모델들의 스키마와 같으면 좋습니다.
- ViewModel은 DI 부분을 제외하고 Android 라이브러리를 사용하지 않는 것이 좋아서 kotlin flow를 사용했습니다.
- LiveData 대신 StateFlow를 사용하였습니다.
프로젝트 내 Data 흐름
(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
반응형
'개발 > Android' 카테고리의 다른 글
[Android] DataStore란? (Preference DataStore, Proto DataStore) (1) | 2023.01.19 |
---|---|
[Android] 여러 개의 LiveData를 한번에 핸들링하는 MediatorLiveData (0) | 2022.10.13 |
[Android] 두 개의 RecyclerView 사이에서 Drag and Drop 구현하기 (2) | 2022.09.17 |
[Android] 런처앱(Launcher app)에서 Widget 생성하기 (0) | 2022.09.01 |
[Android] DataBinding이란? (0) | 2022.08.14 |
댓글