Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon มีการเปลี่ยนแปลงอะไรบ้างใน MVVMCROSS V3 เกี่ยวกับการก่อสร้าง ViewModel


มีการเปลี่ยนแปลงอะไรบ้างใน MVVMCROSS V3 เกี่ยวกับการก่อสร้าง ViewModel


ใน MVVMCROSS V3 มีการเปลี่ยนแปลงที่สำคัญหลายประการเกี่ยวกับการก่อสร้าง ViewModel ซึ่งมีวัตถุประสงค์เพื่อเพิ่มความสามารถในการทดสอบและการใช้งานสำหรับนักพัฒนา นี่คือการเปลี่ยนแปลงที่สำคัญ:

1. การฉีดขึ้นอยู่กับการพึ่งพาตัวสร้าง: หนึ่งในการเปลี่ยนแปลงที่สำคัญคือการแนะนำการฉีดขึ้นอยู่กับการพึ่งพาตัวสร้าง สิ่งนี้ทำให้นักพัฒนาซอฟต์แวร์สามารถฉีดพึ่งพาได้โดยตรงไปยังคอนสตรัคเตอร์ของ ViewModel ทำให้ง่ายต่อการจัดการการพึ่งพาและปรับปรุงความสามารถในการทดสอบ ก่อนหน้านี้การพึ่งพามักจะได้รับการจัดการด้วยวิธีการอื่นซึ่งอาจตรงไปตรงมาน้อยกว่า

2. การนำทางโดยใช้คลาสการนำทางที่พิมพ์: MVVMCROSS V3 แนะนำระบบนำทางใหม่ที่ใช้คลาสการนำทางที่พิมพ์ นี่หมายความว่าแทนที่จะนำทางไปยังมุมมองโดยตรงนักพัฒนาสามารถนำทางระหว่าง ViewModels โดยใช้คลาสที่พิมพ์อย่างเข้มงวด วิธีการนี้นำไปสู่การนำทางข้ามแพลตฟอร์มได้ง่ายขึ้นโดยการสรุปรายละเอียดเฉพาะแพลตฟอร์ม

3. การบันทึกและโหลดสถานะ ViewModel สำหรับ Tombstoning: คุณสมบัติที่สำคัญอีกประการหนึ่งที่แนะนำใน V3 คือความสามารถในการบันทึกและโหลดสถานะ ViewModel สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับการจัดการสถานการณ์ "Tombstoning" ซึ่งแอปพลิเคชันอาจถูกยกเลิกโดยระบบปฏิบัติการเนื่องจากข้อ จำกัด ของหน่วยความจำแล้วกู้คืนเมื่อผู้ใช้กลับมา โดยการบันทึกสถานะ ViewModel แอปพลิเคชันสามารถรักษาสถานะปัจจุบันของพวกเขาได้แม้หลังจากถูกยกเลิกและเริ่มต้นใหม่

4. พารามิเตอร์การนำทางที่ส่งผ่านไปยัง `init ()` วิธีการ: ในรุ่นเก่าของ MVVMcross พารามิเตอร์การนำทางถูกส่งผ่านโดยตรงไปยังตัวสร้าง ViewModel อย่างไรก็ตามเริ่มต้นด้วย V3 พารามิเตอร์เหล่านี้ถูกส่งผ่านไปยังวิธี `init ()` การเปลี่ยนแปลงนี้ทำให้ตัวสร้างสามารถใช้สำหรับการฉีดพึ่งพาได้เพียงอย่างเดียวทำให้การทำความสะอาดรหัสและการบำรุงรักษามากขึ้น เมธอด `init ()` กลายเป็นสถานที่ที่มีการประมวลผลพารามิเตอร์การนำทางทำให้สามารถใช้ตรรกะการเริ่มต้นที่ยืดหยุ่นได้มากขึ้น

โดยรวมแล้วการเปลี่ยนแปลงเหล่านี้ใน MVVMCROSS V3 เป็นวิธีที่มีโครงสร้างและบำรุงรักษามากขึ้นในการสร้างและจัดการ ViewModels เพิ่มประสบการณ์การพัฒนาโดยรวมสำหรับการใช้งานข้ามแพลตฟอร์ม

การอ้างอิง:
[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.mvvmcross.com/documentation/fundamentals/navigation
[10] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[11] https://github.com/mvvmcross/mvvmcross/blob/develop/changelog.md