-
[Android_MVVM_CleanArchitecture] 1. Data Layer오픈소스 공부/Android_MVVM_CleanArchitecture 2024. 11. 21. 11:29
클린 아키텍처를 학습하면서 MVVM에 대한 학습을 했지만 실제로 어떻게 적용해야 할지 모르겠어서 Github 여행을 하려고 한다.
첫 시작은 Android_MVVM_CleanArchitecture 이름의 프로젝트이다.
https://github.com/Gun-HelloWorld/Android_MVVM_CleanArchitecture
GitHub - Gun-HelloWorld/Android_MVVM_CleanArchitecture: Android MVVM Clean Architecture
Android MVVM Clean Architecture. Contribute to Gun-HelloWorld/Android_MVVM_CleanArchitecture development by creating an account on GitHub.
github.com
먼저 패키지 구성이 어떻게 되어 있는지 보고 넘어가려한다.
이 프로젝트의 모듈은 3가지로 나눠져서 구성되어 있다.
- data
- domain
- presentation
구글에서 추천하는 3layer architecture를 사용한 것으로 보인다.
data 모듈의 구성을 보면,
기본적으로 데이터 전달 받는 부분을 RemoteDataSource와 LocalDataSource로 나뉜다.
RemoteDataSource는 Retrofit을 사용해 네트워크 통신을 하고, LocalDataSource는 Room Database를 이용해서 가져온다.
- RemoteDataSource 구성요소
- Retrofit
- API Interface
- 서버의 API End Point를 정의하는 인터페이스다.
- Retrofit이 자동으로 구현체를 생성하여 사용할 수 있게 해준다
- 일반적으로 이름은 ~~Api로 정의됩니다. (예: UserApi, MarvelApi)
- DTO (Data Trasnfer Object)
- DTO는 로직을 가지지 않는 데이터 객체이고, getter, setter 메소드만 가진 클래스를 의미한다.
- LocalDataSource 구성요소
- Room Database
- Dao
- 데이터베이스와의 상호작용르 캡슐화한 인터페이스다. RemoteDataSource의 API 부분과 대응된다고 생각한다.
- Entity :
- 데이터베이스 테이블의 스키마를 정의하는 클래스이다. RemoteDataSource의 DTO랑 대응되는 느낌이 아닐까 싶다.
RemoteDataSource 와 LocalDataSource에서 받아오는 데이터를 Repository에 모아서 처리해준다. Repository에서는 Mapper를 통해 전달받은 데이터를 가공해 상황에 맞게 사용한다.
처음본 부분은 구현부와 interface를 따로 나눠서 만드는 부분을 보았다.
이런식으로 나눠서 사용하는 것도 한 방법이라고 할 수 있을 것 같아서 다음 개인 프로젝트 앱에 적용해보려고 한다.
'오픈소스 공부 > Android_MVVM_CleanArchitecture' 카테고리의 다른 글
[Android_MVVM_CleanArchitecture] 2. Domain Layer (1) 2024.11.21