클린 아키텍쳐란?
안드로이드 Clean Architecture에 대하여
앱 아키텍처 가이드 | Android Developers
관심사 분리를 통해 UI, Domain, Data 레이어가 각각의 책임을 가지고 있다.
각 모듈은 단방향으로 참조하고 있다. UI -> Domain -> Data
단방향 데이터 흐름
데이터가 한방향으로만 흐르는 것
이벤트 발생: UI -> Domain -> Data 로 상위레이어로 전달한다.
데이터 전달: Remote or Loca Server로 부터 받은 데이터를 Data -> Domain -> UI 로 하위 레이어로 전달한다.
UI Layer
- Activity/Fragment + xml
- Compose UI
- ViewModel (UI에 바인딩해준 데이터를 상태 홀더 클래스를 통해 보유한다.)
LiveData와 StateFlow 는 android 에서 권장하는 상태 관리 홀더 클래스
StateFlow 및 SharedFlow 권장 사례
Domain Layer
UseCase
- Viewmodel의 중복코드를 정의
- ViewModel의 책임 이외에 필요한 비즈니스 로직이 정의되는 책임
Data Layer
Repository
- 앱내 필요 데이터를 DataSource에 요청하는 책임
- DataSource로부터 받아온 데이터를 가공에 하위 레이어에 전달해주는 책임
- 가공한데이터를 Repository모듈에 캐싱하는 책임
DataSource
- Repository 가 필요한 데이터를 Remote or/and Local Server에 요청한다.
- Repository에 데이터를 제공한다.