จาก blog
เรื่อง [Android] ลองใช้ ViewModel class จาก Architecture Component กันหน่อย
มีคำถามว่า
ถ้าอยากให้การสร้าง ViewModel ส่วนงามมากขึ้น
แนะนำให้ใช้งาน Factory pattern มาช่วย !!!
มันทำอย่างไร ?
ดังนั้นจึงมาตอบคำถามไว้นิดหน่อย
ก่อนอื่นให้สร้าง class BookViewModelFactory ขึ้นมา
เพื่อทำหน้าที่สำหรับสร้าง BookViewModel
ซึ่งใน class เราสามารถกำหนดค่าต่าง ๆ ที่จำเป็นต้องใช้ไปได้
ต่างจากเดิมที่ทำอะไรไม่ได้เลย
ที่สำคัญแยกการทำงานออกมาจาก Activity อีกด้วย ตามแนวคิด SRP (Single Responsibility Principle)
ทำให้การสร้าง ViewModel มีความยืดหยุ่นขึ้น
[gist id="3b41e1ee6f1b4cdb5f9a2af08974938e" file="BookViewModelFactory.java"]
จากนั้นในส่วนของ Activity ให้เรียกใช้งาน
สังเกตุว่าในส่วนของ ViewModelProviders นั้นเราจะส่ง object ของ ModelViewFactory เข้าไปแทน
เพื่อสร้าง object ของ ViewModel ที่ต้องการ
[gist id="3b41e1ee6f1b4cdb5f9a2af08974938e" file="MainActivity.java"]
ปล. ถ้านำ Dagger 2 มาใช้ด้วยจะแจ่มมากยิ่งขึ้น
Reference Websites
https://medium.com/@dpreussler/add-the-new-viewmodel-to-your-mvvm-36bfea86b159