[java] نمط MVC على Android


Answers

لا يوجد نمط MVC فريد عالميًا. MVC هو مفهوم وليس إطار عمل برمجة قوي. يمكنك تنفيذ MVC الخاص بك على أي نظام أساسي. طالما أنك تلتزم بالفكرة الأساسية التالية ، فأنت تقوم بتنفيذ MVC:

  • نموذج: ما تقدم
  • عرض: كيفية تقديم
  • المراقب المالي: الأحداث ، وإدخال المستخدم

فكّر أيضًا بهذه الطريقة: عند برمجة نموذجك ، لا داعي لأن يقلق النموذج بشأن العرض (أو رمز معين في النظام الأساسي). سيقول النموذج في طريقة العرض ، لا يهمني إذا كان العرض الخاص بك هو Android أو iOS أو Windows Phone ، هذا ما أحتاجه لتقديمه. سيتعامل العرض مع شفرة العرض الخاصة بالنظام الأساسي فقط.

وهذا مفيد بشكل خاص عند استخدام Mono لمشاركة النموذج لتطوير تطبيقات عبر النظام الأساسي.

Question

هل من الممكن تطبيق نموذج وحدة التحكم في العرض في Java for Android؟

أم أنها نفذت بالفعل من خلال الأنشطة؟ أم أن هناك طريقة أفضل لتنفيذ نمط MVC لنظام Android؟




أعتقد أن التفسير المبسط الأكثر فائدة هو: http://www.cs.otago.ac.nz/cosc346/labs/COSC346-lab2.2up.pdf

من كل شيء آخر رأيته وقراءته هنا ، فإن تنفيذ كل هذه الأشياء يجعل الأمر أصعب ولا يتناسب بشكل جيد مع أجزاء أخرى من android.

وجود نشاط تنفيذ المستمعين الآخرين هو بالفعل طريقة أندرويد القياسية. الطريقة الأكثر ضررًا هي إضافة Java Observer مثل الشرائح ووصف مجموعة onClick وأنواع أخرى من الإجراءات في الوظائف التي لا تزال في النشاط.

طريقة أندرويد هي أن النشاط يقوم بهما. محاربته لا يجعل حقا تمديد أو القيام الترميز المستقبلية أسهل.

أوافق على المشاركة الثانية . إنه نوع من التنفيذ بالفعل ، وليس الطريقة التي اعتاد الناس على استخدامها. سواء كان في نفس الملف أم لا ، هناك فصل بالفعل. ليست هناك حاجة لإنشاء فصل إضافي لجعله مناسبًا للغات وأنظمة تشغيل أخرى.







بعد بعض البحث ، فإن الإجابة الأكثر منطقية هي ما يلي:

تم بالفعل تنفيذ MVC في Android على النحو التالي:

  1. عرض = تخطيط والموارد وفصول مدمجة مثل Button مشتق من android.view.View .
  2. المراقب = النشاط
  3. نموذج = الطبقات التي تنفذ منطق التطبيق

(وهذا يعني عدم وجود منطق نطاق التطبيق في النشاط.)

الأمر الأكثر منطقية لمطور صغير هو اتباع هذا النمط وليس محاولة القيام بما قررت Google عدم القيام به.

ملاحظة: ملاحظة أنه يتم إعادة تشغيل النشاط أحيانًا ، لذلك لا يوجد مكان لبيانات النموذج (الطريقة الأسهل للتسبب في إعادة التشغيل هي حذف android:configChanges="keyboardHidden|orientation" من XML وتحويل جهازك).

تصحيح

قد نتحدث عن MVC ، ولكن سيكون الأمر كذلك لقول FMVC ، Framework - Model - View - Controller . يفرض إطار العمل (نظام تشغيل أندرويد) فكرته عن دورة حياة المكونات والأحداث ذات الصلة ، وعمليًا ، يتحمل المراقب المالي ( Activity / Service / BroadcastReceiver ) المسؤولية عن التعامل مع هذه الأحداث الإطارية (مثل onCreate () ). . هل يجب معالجة إدخال المستخدم بشكل منفصل؟ حتى إذا كان يجب ، لا يمكنك فصله ، كما تأتي أحداث إدخال المستخدم من Android.

على أي حال ، كلما قل الرمز الذي لم يتم تحديده على Android خاصتك في Activity / Service / BroadcastReceiver ، كان ذلك أفضل.




Model-View-Controller في Android في حوالي عام 2011 ، عندما بدأ Android يزداد شيوعًا ، ظهرت أسئلة الهندسة المعمارية بشكل طبيعي. نظرًا لأن MVC كان أحد أشهر أنماط واجهة المستخدم في ذلك الوقت ، حاول المطورون تطبيقه على Android أيضًا.

النموذج يمثل الموديل مجموعة من الفئات التي تصف نموذج الأعمال التجارية ، أي نموذج العمل ، وكذلك عمليات الوصول إلى البيانات ، أي نموذج البيانات. كما يحدد قواعد الأعمال للبيانات التي تعني كيف يمكن تغيير البيانات والتلاعب بها.

عرض عرض يمثل مكونات واجهة المستخدم. وهي مسؤولة فقط عن عرض البيانات التي يتم تلقيها من وحدة التحكم كنتيجة لذلك. هذا أيضا يحول طراز (ق) في واجهة المستخدم.

المراقب المالي إن المراقب المالي مسؤول عن معالجة الطلبات الواردة. يتلقى مدخلات من المستخدمين عبر العرض ، ثم يعالج بيانات المستخدم بمساعدة النموذج ويمرر النتائج مرة أخرى إلى العرض. عادةً ما يعمل كمنسق بين العرض والطراز.

في كلمة آخرى

النماذج: مزودي المحتوى. مدراء البيانات التي هي الشكل الموصى به لمشاركة البيانات بين التطبيقات.

المشاهدات: الأنشطة. هذا هو مكون واجهة المستخدم الأساسي للتطبيق. يتم اشتقاق كل شاشة فردية من تطبيق Android من فئة نشاط Java (android.app.Activity). فهي حاويات لوجهات النظر (android.view.View).

وحدات التحكم: الخدمات. هذه مكونات الخلفية التي تتصرف مثل daemons UNIX وخدمات Windows. أنها تعمل بشكل خفي وتقوم بمعالجة مستمرة دون مراقبة.




نمط MVC الخاص بنظام Android هو (نوع) تم تنفيذه مع فئات Adapter الخاصة به. يستبدلون وحدة تحكم مع "محول". يوضح وصف حالات المحول:

يعمل كائن المهايئ كجسر بين محول Adapter والبيانات الأساسية لهذا العرض.

أنا أبحث فقط في هذا عن تطبيق Android الذي يقرأ من قاعدة بيانات ، لذلك لا أعرف مدى نجاحها حتى الآن. ومع ذلك ، يبدو الأمر وكأنه نموذج كيو تي في العرض - المندوب ، الذي يزعمون أنه خطوة من نمط MVC التقليدي. على الأقل على جهاز الكمبيوتر ، يعمل نمط كيو تي بشكل جيد.







لقد رأيت أن العديد من الأشخاص يقولون إن MVC قد تم تنفيذه بالفعل في Android ، ولكن هذا ليس صحيحًا. لا يتبع نظام Android أي MVC افتراضيًا.

لأن Google لا ترغب في فرض قيود على تنفيذ MVC مثل iPhone ، ولكنها تركت هذا القرار على المستخدم لاستخدام تقنية MVC ، لأنه في التطبيقات الصغيرة أو البسيطة ليس لدينا حاجة لاستخدام MVC ، ولكن يصبح التطبيق معقدًا وسيتطلب تعديل شفرته بعد اكتمال التطوير ، ثم تأتي الحاجة إلى نمط MVC في Android.

يوفر طريقة سهلة لتعديل التعليمات البرمجية وأيضا المساعدة في القضايا غير المرغوب فيها. تلك تأتي في أنماط تصميم أندرويد بسيطة. إذا كنت ترغب في تنفيذ MVC على Android ، اتبع هذا الرابط الوارد أدناه واستمتع بتطبيق MVC في مشروعك.

http://www.therealjoshua.com/2011/11/android-architecture-part-1-intro/




أفضل مورد وجدته لتنفيذ MVC على Android هو هذا المنشور :

لقد اتبعت نفس التصميم لأحد مشروعاتي ، وعملت بشكل رائع. أنا مبتدئ على Android ، لذا لا يمكنني القول أن هذا هو الحل الأفضل.

لقد قمت بإجراء تعديل واحد: قمت بإنشاء نموذج وحدة تحكم لكل نشاط في فئة التطبيق بحيث لا يتم إعادة إنشاء هذه الصور عند تغيير وضع عمودي - أفقي.




على الرغم من أن هذه المشاركة قديمة ، إلا أنني أود إضافة الرقمين التاليين للإبلاغ عن التطوير الأخير في هذا المجال لنظام Android:

android-binding - توفير إطار عمل يعمل على تجليد عناصر واجهة التعامل مع عرض android لنموذج البيانات. فهو يساعد على تنفيذ أنماط MVC أو MVVM في تطبيقات Android.

roboguice - RoboGuice يأخذ التخمين من التنمية. قم بحقن العرض أو الموارد أو خدمة النظام أو أي كائن آخر ، واترك RoboGuice يهتم بالتفاصيل.




Related