عانى مطور الاندرويد من عدم وجود هندسة برمجية مدعومة من قبل مطورين الـ Android SDK لإنشاء التطبيقات في الماضي. ولكن هذه المعاناه قد انتهت بعد ان جائت مجموعة الـ JetPack للاندرويد بحيث انها احتوة على قسم كامل خاص بالـ Architecture. ففي هذه المقالة سنتعرف على نبذه شامله عنها.

على ماذا تعتمد الـ Architecture JetPack

تعتمد على العديد من انماط التصميم للبرمجة (Software Design Patterns) فقبل تجربتك معها يجب عليك الالمام ببعض من هذه الانماط كنمط الـ Entity وهو عباره عن نمط Model مع اضافة بعض المميزات له. ونمط الـ Dao اختصاراً لـ Data access object الذي من خلاله نستطيع الدخول الى البيانات. ونمط الـ Repository المستودع الذي يجمع بين البيانات المحليه لقاعدة البيانات بالهاتف وبين قاعدة البيانات الموجودة في السحاب. وايضاً نمط الـ MVVM وهو يمثل اهم نمط في الـ Architectural. وبعض الانماط الاخرى للإطلاع عليها راجع مقالة سابقة لي في عالم البرمجة المتطلبات للـ Android Architecture Components.

مكونات الـ Architectural في الاندرويد

هناك مكونات عدة لتطبيق الـ Architectural الذي جاء به الـ JetPack وهي كالتالي بالترتيب:

  • نمط الـ MVVM اختصاراً لـ Model/View/ViewModel وجد سنة ٢٠٠٥ من قبل موظف ميكروسوفت JohnGossman وهذه هي اول مقاله نشرت عن هذا النمط. يقوم على مبدء (separation of concerns) فصل عملية تطوير الواجهه (UI) عن الشفرات البرمجيه (Business Logic Code). حيث تكون الـ Model هي التي تمثل العناصر لدينا, اما الـ View فهو مايراه المستخدم, اما الـ ViewModel فهي حلقة الوصل بينهم.
  • الـ Entity: تمثل الـ Model في مشروعك وايضاً مخطط قاعدة البيانات (Database Schema) للتطبيق. للمزيد انظر درس انشاء كلاس الـ Entity.
  • الـ Dao: من خلال هذه العناصر نستطيع ارسال اوامر SQL الى قاعدة البيانات. للمزيد انظر انشاء واجهة الـ DAO.
  • الـ Repository اي المستودع: يعتبر المسؤول عن جميع مصادر بياناتك, ففيه تقوم بجمع البيانات المحليه والتي تأتي من السحاب. انظر درس انشاء المستودع بـ LiveData. فمن خلال دمجة مع قاعدة الـ Room نستطيع تمثيل القاعدة المشهورة في البرمجة وهي: Single Source of Truth.
  • الـ ViewModel: صممت لحفظ وادارة البيانات وبها نستطيع الاستغناء عن الـ Loader القديم, ولها ادراك بالـ lifeCycle للـ Context وتعيش بداخلها الـ LiveData.
  • الـ PagedList Adapter: مشابه للـ Adapter العادي ولكن يتم استخدامه لتقليل وطئه تحميل البيانات الضخمه على الـ RecyclerView.

هذه كانت اغلب الاشياء التي نحتاجها لإنشاء وتصميم تطبيقات ذي جودة عاليه وسهولة تطويرها واجراء عمليات الاصلاح لها في المستقبل. تستطيع قرائة دورة سابقه لي قد كتبتها بشكل مفصل جداً على منصة عالم البرمجة: دروس لتعلم Android Architecture Components من حزمة Android JetPack.


0 Comments

اترك رد