จาก blog เรื่อง [Android] ลองใช้ ViewModel class จาก Architecture Component กันหน่อย
มีคำถามว่า
ถ้าอยากให้การสร้าง ViewModel ส่วนงามมากขึ้น
แนะนำให้ใช้งาน Factory pattern มาช่วย !!!
มันทำอย่างไร ?

ดังนั้นจึงมาตอบคำถามไว้นิดหน่อย

ก่อนอื่นให้สร้าง class BookViewModelFactory ขึ้นมา

เพื่อทำหน้าที่สำหรับสร้าง BookViewModel
ซึ่งใน class เราสามารถกำหนดค่าต่าง ๆ ที่จำเป็นต้องใช้ไปได้
ต่างจากเดิมที่ทำอะไรไม่ได้เลย
ที่สำคัญแยกการทำงานออกมาจาก Activity อีกด้วย ตามแนวคิด SRP (Single Responsibility Principle)
ทำให้การสร้าง ViewModel มีความยืดหยุ่นขึ้น

จากนั้นในส่วนของ Activity ให้เรียกใช้งาน

สังเกตุว่าในส่วนของ ViewModelProviders นั้นเราจะส่ง object ของ ModelViewFactory เข้าไปแทน
เพื่อสร้าง object ของ ViewModel ที่ต้องการ

ปล. ถ้านำ Dagger 2 มาใช้ด้วยจะแจ่มมากยิ่งขึ้น

Reference Websites
https://medium.com/@dpreussler/add-the-new-viewmodel-to-your-mvvm-36bfea86b159