KDT-villainlp / villainlp

노블라블라(novelah blah)은 사용자와 AI가 함께 창의적인 이야기를 만들어 나가는 협업 소설 쓰기 경험을 제공하는 앱입니다
0 stars 1 forks source link

ref: GenNovelViewModelFactory로 뷰모델관리 #19

Closed vmkmym closed 9 months ago

vmkmym commented 9 months ago

🏭 ViewModelFactory 역할

🏭 ViewModelFactory 이점

  1. 의존성 주입: ViewModelFactory를 사용하면 ViewModel에 필요한 의존성을 주입할 수 있다. 예를 들어, FirebaseAuthChatModel과 같은 객체를 ViewModel에 전달할 수 있다. 이는 ViewModel이 필요로 하는 데이터를 제공하고, ViewModel이 이 데이터를 사용하여 UI를 업데이트하는 데 도움이 된다.

  2. 재사용성: ViewModelFactory를 사용하면 ViewModel 생성 로직을 한 곳에서 관리할 수 있다. (코드의 재사용성, 유지 보수 용이)

  3. 테스트 용이성: ViewModelFactory를 사용하면 ViewModel의 인스턴스를 쉽게 생성할 수 있다. 이는 ViewModel의 단위 테스트를 수행하는 데 도움이 된다. 테스트에서는 특정 의존성을 가짜 객체로 대체하여 ViewModel의 동작을 테스트할 수 있다.

  4. 유연성: ViewModelFactory를 사용하면 다양한 종류의 ViewModel을 생성할 수 있다.

🏭 ViewModelFactory 주의할 점

  1. ViewModelFactory의 create 메서드에서는 ViewModel 클래스의 타입을 확인하고, 해당 타입에 맞는 ViewModel 인스턴스를 생성하여 반환해야 한다. 만약 알 수 없는 ViewModel 클래스가 전달되면, IllegalArgumentException을 발생시키는 것이 일반적이다.

  2. ViewModelFactory를 사용할 때는 ViewModel의 생명주기를 고려해야 한다. ViewModel은 화면 회전과 같은 구성 변경을 거치더라도 데이터를 유지해야 합니다. 따라서 ViewModel 인스턴스를 생성할 때는 ViewModelProvider를 사용하는 것이 좋다. 이를 통해 시스템이 ViewModel의 생명주기를 관리하고, 필요한 경우에만 새로운 ViewModel 인스턴스를 생성하게 할 수 있다.