
MVC هو نهج نظيف في Android وضع وجهات النظر بعيدا عن وحدة التحكم. تكون وحدة التحكم مسؤولة فقط عن تحديث النماذج ، بمجرد تحديث النموذج ، يمكنه إخطار المشاهدات ومن ثم يمكن تحديث العرض باستخدام عمليات الاسترجاعات المناسبة. MVC التقليدية حيث يوجد
النموذج : يعمل كنموذج للبيانات
العرض : يتعامل مع عرض المستخدم الذي يمكن أن يكون واجهة المستخدم
وحدة التحكم : يتحكم في التفاعل بين النموذج والعرض ، حيث يستدعي العرض وحدة التحكم لتحديث النموذج. يمكن أن تستدعي عرض أجهزة تحكم متعددة إذا لزم الأمر ..
يمكن التغلب على بعض عيوب MVC باستخدام نهج MVP. يحتوي مقدم العرض في MVP على جميع منطق الأعمال ، وهذه الفئة بعيدة عن سياق Android أو التبعيات المتعلقة بنظام Android والتي توفر المرونة لمنطق الأعمال النصية من خلال استخدام فئة مقدم العرض في وحدات الاختبار. التبعيات ذات الصلة Android تخلق التعقيد في الاختبار. لا يحتوي مقدم العرض على أي اعتماد على نظام Android مثل السياق ، والعرض ، وما إلى ذلك ، ويتم إجراء جميع تحديثات النماذج وطلبات الشبكة عبر مقدم العرض. بمجرد تحديث النموذج أو اكتمال طلب الشبكة ، يتم تحديث العرض عبر مقدم العرض باستخدام عمليات الاسترجاعات لعرضها من مقدم العرض. لا يمكن لأي نموذج وطلب الشبكة أن يقترب مباشرة من المشاهدات.
يتضمن MVVM نهج ربط البيانات لجعل الكود قصيرًا وتقليل رمز معالجة العرض من فئات Java. نماذج العرض مسؤولة عن تحديث العرض وبمجرد ربط نموذج العرض برؤية ، يتم إخطار العرض بأحداث التحديث الخاصة بهم. إذا تم تحديث النموذج بواسطة المستخدم ، فانقر فوق النموذج إرسال عمليات الاسترجاع لعرض النموذج الذي يقوم بتحديث العرض تلقائيًا حيث يتم ربطه بمشاهدات المشاهدات. MVVM يقلل من حجم الرمز ولكن تنفيذ MVVM صعب للغاية ومن الصعب تصحيح المشاريع الكبيرة على أساس MVVM.


؟
يتضمن اختيار بنية صحيحة للمشروع فهم الوحدات النمطية التي يجب تطويرها. بعض الوظائف تعمل بشكل رائع على MVC ، وبعضها مع MVP وبعضها مع MVVM. من الصعب للغاية تصحيح المشاريع التي تم إجراؤها على MVVM خاصة تلك التي لا تحتوي على تدفق بيانات واحد بسبب ربط البيانات والبيانات المباشرة. إذا تلقى تطبيق ما دفق بيانات مستمر من مصدر ما ، يحتاج إلى تحديث مستخدم منتظم ولديه تواصل واحد (80-90 ٪) من جانب واحد (على سبيل المثال: الأجهزة الإلكترونية التي ترسل السجلات إلى تطبيق Android) مثل تطبيقات الخلايا الشمسية أو تطبيقات المحولات أو أي مراقبة حالة أخرى يمكن أن تعمل مع MVVM بسبب البيانات الحية- UI. يمكن أن يكون تصحيح تطبيقات MVVM سهلة لأن التدفق الرئيسي للبيانات هو واحد من جانب واحد .
MVP هو نهج جيد لكتابة مشاريع Android عندما نشعر بالقلق من اختبار اختبار وحدة WRT المنطقية التجارية عبر أطر اختبار Java (وليس Android). نظرًا لأن Java Test Framework لن يحل سوى تبعيات Java وطبقة مقدميحة نظيفة خالية من التبعيات ذات الصلة بنظام Android مثل السياق أو المشتركين أو أي com.android آخر. * طَرد. عيب MVP هو أنه ينتهي كتابة رمز إضافي من 20 إلى 25 ٪ مع نفس الوظيفة المكتوبة في MVC أو MVVM. MVP جيد إذا كنت مهتمًا حقًا بحالات الاختبار واختبار الوحدات للوحدات. بالنسبة إلى MVP باستخدام مجموعات اختبار Java ، قم فقط بإجراء مثيل للمقدم وتشغيل وظائف الاختبار.
على سبيل المثال: مقدم جديد (). TestSomeFunction () .
يستخدم MVC على نطاق واسع في Android. كتبت Google نفسها مستودعات في MVC لسنوات عديدة. الآن أيام ، تعتمد Google MVVM لمستودعات GitHub لأن هذه الريبو صغيرة وعينات كبيرة. يمكن اختبار تطبيق MVC عبر أطر اختبار Android ليس مع أدوات اختبار Java المحددة بسبب عدم تبعية com.android. * الحزم في أداة محددة Java.
مثال :
ملاحظة : لا توجد بنية واحدة هي الأفضل للجميع. إذا كان هناك واحد ، فلن تكون هناك أي حاجة لتعلم بنيات أخرى. يعتمد اختيار الهندسة المعمارية الصحيحة على عدة عوامل مثل المتطلبات الأولية ، وتدفق البيانات ، قابلية التوسع ، الصيانة ، التحديثات (CRS) ، متطلبات الاختبار.
باستثناء هذه البنية الثلاثة Android ، هناك بنية أخرى تسمى "MVI - نموذج عرض النموذج". هذا لا يحظى بشعبية كبيرة بين مطوري Android. يرجى التحقق من هذا الرابط إذا كنت مهتمًا بـ MVI .
https://github.com/saksham24/android-simple-mvi-pattern-with-mvp-mvpm-collaboration