1ebec223e0dc2bae61abe9e74683766d1d166cbef60e0d5228d3e24a4c7156d812a68e695b4f13ba2bee

디씨 앱의 홈 화면임

안드로이드로 따지면 MainActivity 겠지?

그럼 이거에 맞는 ViewModel이 있을거임

class MainViewModel: ViewModel() 이렇게 해줬겠지

대부분의 예제들이 이녀석이 MVVM의 ViewModel 이라고 하는데 그렇지 않다

얜 그냥 MainActivity 가 생명주기 때문에 데이터관리가 힘드니까 ViewModel 라이브러리를 붙여서 만든 애인거고 여기서 모든 데이터 관리할 필요 없음

화면을 보면 검색 UI, 배너 UI, 힛갤 UI, 실베 UI가 있지?

그럼 이 UI 들 마다 따로따로 ViewModel을 만들어줘서 (ViewModel 상속 안받음)

class SearchViewModel
class BannerViewModel
class HitViewModel
class BestViewModel

만들어준 다음

class MainViewModel(
    val searchViewModel,
    val bannerViewModel
    val hitViewModel,
    val bestViewModel
): ViewModel()

로 주입시켜주면 되는거임

배너 UI같은건 자주 쓰일 수 있으니까 재활용이 될 수 있는거고

근데 현업에서도 저렇게 분리 안하고 MainViewModel에 다 때려박는 사람 많다 그 경우엔 MVVM의 ViewModel 역할도 하는거 맞음

지금 현직장도 그렇게 때려박은 사람들의 레거시 코드들이 산더미로 있음

그러니 그냥 대충 쓰면 됨