728x90
아키텍쳐 패턴의 종류
- MVC, MVP, MVVM, MVI, …가 있음
아키텍쳐 가이드
UI Layer
- UI의 역할은 화면에 애플리케이션 데이터를 표시하고 사용자와 상호작용
- 상호작용 : 버튼 클릭, 네트워크 처리, 데이터의 변경, …
- UI는 데이터 레이어에서 가져온 애플리케이션 상태를 시각적으로 나타냄
UI State
- LiveData
- StateFlow, SharedFlow
ViewModel
- ViewModel는 비즈니스 로직을 캡슐화하고 UI 상태를 나타냄
- ViewModel에서 Data Layer에 있는 데이터를 가져옴
- ViewModel UI에 사용될 상태를 처리하고 UI Layer에 이벤트를 알리거나 상태를 업데이트함
- UI Layer는 ViewModel에 이벤트를 전송함
- ViewModel은 View의 라이프사이클이 종료(destory)될때 사라짐(cleared)
- 앱의 데이터 읽기, 생성, 저장, 변경 방식을 결정하는 규칙으로 구성함
Domain Layer (optional)
- 하나의 기능만을 위한 클래스
- optional이기 때문에 해도되고, 안해도됨
- ex) GetTodoDetailUseCase(), AddTodoContentUseCase()
요약
View
- 보통 Activity, Fragment가 View 역할을 담당
- 사용자의 Action을 받음 (텍스트 입력, 버튼 터치 등)
- ViewModel의 데이터를 관찰해(Observe) UI를 갱신
- 사용자의 Action을 감지하고 데이터 변화를 통해 UI 갱신 처리
ViewModel
- 사용자의 Action, LifeCycle에 의해 View에서 요청한 데이터, 비지니스 로직을 처리함
- Model에 요청한 데이터를 받음
Model (Data Layer)
- ViewModel에서 요청한 데이터를 처리, 반환
- Local DB(SQLite, Room), Network 통신(Retrofit)을 이용함
참고
https://developer.android.com/topic/architecture?hl=ko
https://thdev.tech/android/2022/12/12/Android-Follow-MVVM-Intro/