Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Perubahan apa yang diperkenalkan di MVVMCross V3 tentang konstruksi ViewModel


Perubahan apa yang diperkenalkan di MVVMCross V3 tentang konstruksi ViewModel


Dalam MVVMCross V3, beberapa perubahan signifikan diperkenalkan mengenai konstruksi ViewModel, yang bertujuan untuk meningkatkan testabilitas dan kegunaan bagi pengembang. Berikut adalah perubahan kuncinya:

1. Injeksi ketergantungan berbasis konstruktor: Salah satu perubahan utama adalah pengenalan injeksi ketergantungan berbasis konstruktor. Ini memungkinkan pengembang untuk menyuntikkan dependensi langsung ke konstruktor ViewModel, membuatnya lebih mudah untuk mengelola dependensi dan meningkatkan testabilitas. Sebelum ini, dependensi sering dikelola melalui cara lain, yang bisa kurang mudah.

2. Navigasi menggunakan kelas navigasi yang diketik: MVVMCross v3 memperkenalkan sistem navigasi baru yang menggunakan kelas navigasi yang diketik. Ini berarti bahwa alih-alih menavigasi secara langsung ke tampilan, pengembang dapat menavigasi antara viewmodels menggunakan kelas yang sangat diketik. Pendekatan ini disederhanakan navigasi lintas platform dengan mengabstraksi detail khusus platform.

3. Menyimpan dan memuat kembali status ViewModel untuk Tombstoning: Fitur penting lainnya yang diperkenalkan di V3 adalah kemampuan untuk menyimpan dan memuat kembali status ViewModel. Ini sangat berguna untuk menangani skenario "Tombstoning", di mana aplikasi mungkin diakhiri oleh sistem operasi karena kendala memori, dan kemudian dipulihkan ketika pengguna kembali ke sana. Dengan menyimpan status ViewModel, aplikasi dapat mempertahankan keadaan mereka saat ini bahkan setelah diakhiri dan dimulai kembali.

4. Parameter navigasi diteruskan ke `init ()` Metode: Dalam versi yang lebih lama dari MVVMCross, parameter navigasi diteruskan langsung ke konstruktor ViewModel. Namun, dimulai dengan V3, parameter ini malah diteruskan ke metode `init ()`. Perubahan ini memungkinkan konstruktor untuk digunakan semata -mata untuk injeksi ketergantungan, membuat kode lebih bersih dan lebih dapat dipelihara. Metode `init ()` menjadi tempat di mana parameter navigasi diproses, memungkinkan logika inisialisasi yang lebih fleksibel.

Secara keseluruhan, perubahan-perubahan dalam MVVMCross V3 ini memberikan cara yang lebih terstruktur dan dapat dipelihara untuk membangun dan mengelola viewmodels, meningkatkan pengalaman pengembangan keseluruhan untuk aplikasi lintas platform.

Kutipan:
[1] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[2] https://github.com/mvvmcross/mvvmcross/releases
[3] https://www.reddit.com/r/csharp/comments/12akrcw/mvvm_question_how_do_you_manage_the_interaction/
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[5] https://www.mvvmcross.com/blog/
[6] https://softwareengineering.stackexchange.com/questions/389086/do-we-need-models-if-we-are-using-viewModels
[7] https://stackoverflow.com/questions/16723078/mvvmcross-does-showviewmodel-always-construct-new-instances
[8] https://stackoverflow.com/questions/39587974/changes-in-mvvmcross-bindings
[9] https://www.mvmcross.com/documentation/fundamentals/navigation
[10] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[11] https://github.com/mvvmcross/mvvmcross/blob/develop/changelog.md