Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon ما هي التغييرات التي تم تقديمها في MVVMCROSS V3 فيما يتعلق ببناء VOONMODEL


ما هي التغييرات التي تم تقديمها في MVVMCROSS V3 فيما يتعلق ببناء VOONMODEL


في MVVMCROSS V3 ، تم تقديم العديد من التغييرات المهمة فيما يتعلق ببناء ViewModel ، والتي تهدف إلى تعزيز قابلية الاختبار وسهولة الاستخدام للمطورين. فيما يلي التغييرات الرئيسية:

1. حقن التبعية القائمة على المنشئ: كان أحد التغييرات الرئيسية هو إدخال حقن التبعية القائم على المنشئ. سمح ذلك للمطورين بحقن التبعيات مباشرة في مُنشئ ViewModel ، مما يسهل إدارة التبعيات وتحسين قابلية الاختبار. قبل ذلك ، غالبًا ما تتم إدارة التبعيات من خلال وسائل أخرى ، والتي قد تكون أقل وضوحًا.

2. التنقل باستخدام فئات التنقل المكتوبة: قدم MVVMCROSS V3 نظام تنقل جديد يستخدم فئات التنقل المكتوبة. هذا يعني أنه بدلاً من التنقل مباشرة إلى وجهات النظر ، يمكن للمطورين التنقل بين عوامل العرض باستخدام فصول قوية من النوع. تبسيط هذا النهج التنقل عبر المنصات عن طريق استخلاص التفاصيل الخاصة بالمنصة.

3. إنقاذ وإعادة تحميل حالة ViewModel لـ Tombstoning: كانت ميزة أخرى مهمة تم تقديمها في V3 هي القدرة على حفظ وإعادة تحميل حالة العرض. كان هذا مفيدًا بشكل خاص للتعامل مع سيناريوهات "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]
[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-
[8] https://stackoverflow.com/questions/39587974/changes-in-mvmcross-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