반응형


View = MainActivity
ViewModel = Viewmodel Class
Model = Repository, Database



----Repository----

역할?

Activity/Fragment --(요청)-> ViewModel + Livedata --(요청)-> Repository --(요청)-> Model(room) 
                                                                      --(요청)-> Webservice

설명?

- 뷰모델과 상호작용하기 위해 잘 정리된 데이터 API를 들고 있는 클래스이다.
- 앱에 필요한 데이터(내장 DB, 외장 DB)를 가져온다.
- 뷰모델은 DB나 서버에 직접 접근하지 않고, 리포지토리에 접근하는 것으로 앱의 데이터를 관리
 
- Repository가 viewmodel과 room이라고 하는 db나 retrofit사이에 있습니다.
  viewMode이 Activity나 Fragment에 보여주려고 하는 데이터를 Repository에 요청하면 
  Repository가 요청한 데이터를 받아서 보내줌.

- interface로서 Repository가 존재함, 이렇게하면 ViewModel은 누구에게서 가져온 데이터인지는 신경쓰지 않아도 됨.
  즉, 자신의 비즈니스 로직만 집중하면 됨.




----viewmodel----

역할?

1. Activity/Fragment/View   --(요청 : UI event)->    ViewModel(Livedata) 
2. Activity/Fragment/View <-(응답 : observer에 응답)-- ViewModel(Livedata) 

설명?


- UI를 위한 데이터를 가지고 있다.
- 구성이 변경되어도 살아남는다(회전, 언어변경)
- AsyncTask는 액티비티나 프래그먼트의 생명 주기에서 자유로울 수 없지만,
  뷰모델은 뷰와 분리되어 있기 때문에 액티비티가 Destroy 되었다가 다시 Create 되어도 종료되지 않고 데이터를 여전히 가지고 있다
- 코드/역할 분리 서로 종속성 제거.
- 데이터와 뷰가 불일치 할 확률이 줄어둘게 됨.


반응형

'개발언어 > JAVA' 카테고리의 다른 글

안드로이드 fragment 생명주기 tag 넣기  (0) 2022.02.18
자바 변수  (0) 2021.06.20
안드로이드 메모 + 음성녹음 앱  (2) 2021.03.13
안드로이드, 자바 개념 정리2  (0) 2021.02.09
운영체제 6(FCFS, RR)  (0) 2021.01.27

+ Recent posts