인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Seung Min Liang님의 프로필 이미지
Seung Min Liang

작성한 질문수

Flutter 고급 - 현업 수준의 아키텍처

23 의존성 주입 (DI)

view model 은 팩토리로 생성하는 이유

작성

·

21

0

23강의 5:10에서 usecase,repository 는 싱글톤으로 만들고, viewmodel은 팩토리로 만드는 것이 일반적이라고 하셨습니다.

싱글톤으로 만드는 것은 이해했는데, 팩토리를 사용하는 이유는 무엇일까요?

 

viewModel 안의 state 의 내용이 UI 의 데이터로 채워지고, viewModel 안의 state 는 가변적이니 싱글턴으로 하는게 맞지 않을까라는 생각이 갑자기 들어서요. viewModel을 다시 만드는 것이 어떤 경우가 있는지 궁금합니다.

 

강의항상 재밌게 듣고 있습니다. 감사합니다.

답변 1

0

오준석님의 프로필 이미지
오준석
지식공유자

ViewModel 은 화면에 표시할 데이터를 제공하는 데이터 Holder 역할을 하게 됩니다.

화면을 위한 것이므로 화면과 같은 생명주기를 가져야만 버그 발생 가능성을 줄일수가 있습니다.

 

만약 List, Detail 두 개 화면이 있을 때 DetailViewModel 이 싱글턴으로 유지되면

새로운 항목 클릭해서 Detail 화면으로 왔을 때 기존 화면의 내용이 잠깐 남아 있다가 교체가 될 수도 있고

기존 화면의 내용 일부가 남아 있을 수도 있는 등의 버그 발생 가능성이 있고, 굉장히 귀찮아 집니다.

 

그래서 화면과 ViewModel 의 생명주기를 같게 하는 것이 중요합니다.

이해가 됐습니다! 감사합니다.

Seung Min Liang님의 프로필 이미지
Seung Min Liang

작성한 질문수

질문하기