[프로젝트] 베지도_0819 :: MVVM 패턴

hyihyi·2023년 8월 19일
0

베지도

목록 보기
1/7
post-thumbnail

개념

✔ M - 모델

레파지토리 - 서버나 Room과 같은 로컬 DB에서 받은 날 것 그대로의 데이터

✔ VM 뷰모델

레파지토리에서 데이터를 가지고 비즈니스 로직을 처리한다, 비지니스 로직 - 날것의 데이터를 뷰가 받아 바로 그릴 수 있는 데이터 형태로 처리 함
LiveData.setValue(결과); (메인스레드에서 작업할 때)
LiveData.postValue(결과); (서브스레드에서 작업할 때)

✔ V 뷰

최종 결과물을 받아 뷰를 그려주는 역할을 함.
(ViewModel.LiveData.observe를 통해 VM에서 내려주는 값을 받을 수 있음)
(뷰에서 데이터를 가공하는 비즈니스 로직을 최소화 할수록 좋은 구조입니다. 뷰는 데이터를 받아 그리기만 합니다.)


비유

모델 : 농장, 마트, 백화점 등등 식재료 사오는곳

뷰모델 : 음식점 주방 ( 마트나 농장에서 사온 재료들로 요리해서 접시에 담음)

  • 뷰모델 내 개발자가 만든 함수 : 어떤 접시인지, 요리과정까지 적어놓은 영수증

  • 라이브 데이터 : 테이블로 가져가고 가공한 식재료를 서빙하기위한 접시

  • 옵저버 : 접시에 요리 올라온지 확인하고, 요리 올라오면 손님한테 전달하는 웨이터

뷰 : 손님이 여러명 앉아있는 테이블, 테이블에 손님이 a,b,c가 있으면 손님이 가지고있는 주문영수증별로 접시가 내놓아지기만함

  • 옵저버 : 웨이터, 요리담긴 접시 주문서( 개발자가 만든 뷰모델 내부 메서드) 보고 손님한테 줌

  • 당연히 테이블은 주방에서 뭐하는지, 올라온 요리 원산지 어딘지모름

사용자이벤트 : 손님의 주문


하나의 뷰모델을 여러 뷰가 참조할 수도 있지만 보통은 1:1이다.
여러 프래그먼트에서 하나의 뷰모델을 공유할 때 activityviewmodel을 사용함

profile
자유롭게 쓴 나의 자유로운 Development voyage⛵

0개의 댓글