MVC

نمط الـ MVC، أو Model-View-Controller، يعتبر من أشهر الأنماط المستخدمة في هندسة البرمجيات، وبيساعد على تنظيم الكود بشكل يخلي عملية تطوير وصيانة البرامج أبسط وأسهل.

طيب يعني إيه MVC؟ 🤔

الـ MVC بيتكون من 3 مكونات أساسية:

✅ الـ Model: الجزء ده هو اللي بيتعامل مع البيانات. الـ Model بيقوم بتخزين البيانات، معالجة البيانات، والتواصل مع قواعد البيانات.

ممكن تعتبره زي المسئول عن "المنطق" أو "الشغل" اللي بيحصل في التطبيق. مثلًا لو عندك تطبيق بيعرض قائمة بالمنتجات، فالـ Model هو اللي هيجيب البيانات دي من قاعدة البيانات ويجهزها.


✅ الـ View: وده المسئول عن كل اللي المستخدم بيشوفه قدامه على الشاشة. هو المسئول عن عرض البيانات اللي جهزها الـ Model.

يعني مثلًا لو عندك صفحة بتعرض المنتجات، فالـ View هو اللي بيحدد إزاي المنتجات هتظهر (الألوان، الشكل، الترتيب... إلخ).


✅ الـ Controller: وده الوسيط اللي بيعمل التنسيق بين الـ Model والـ View.

بمعنى تاني، هو اللي بيستقبل طلبات المستخدمين، زي لما تضغط على زرار أو تدخل بيانات في فورم، وبعدين يوجه الطلب للـ Model علشان يعالج البيانات، وفي الآخر يرجع البيانات دي للـ View علشان يعرضها.


مثال بسيط 🛠

تخيل إنك فاتح موقع للتسوق وعايز تشوف قائمة المنتجات:

⚡️ أول حاجة بتضغط على زرار "عرض المنتجات" – هنا الـ Controller بيستقبل الطلب ده.

⚡️ بعد كده، الـ Controller بيروح للـ Model علشان يجيب البيانات من قاعدة البيانات (قائمة المنتجات).

⚡️ الـ Model بيدور في قاعدة البيانات ويجيب المنتجات.

⚡️ بعد ما الـ Model يجهز البيانات، بيرجّعها للـ Controller اللي بدوره يبعتها للـ View.

⚡️ وأخيرًا، الـ View بيعرض المنتجات على الشاشة بالشكل المناسب اللي المستخدم يقدر يشوفه ويتفاعل معاه.


ليه نستخدم الـ MVC؟ 🤷‍♂️

📌 تنظيم الكود: بيخلي الكود منظم أكتر، بحيث تقدر تفصل منطق العمل (الـ Model) عن العرض (الـ View) وعن التحكم (الـ Controller)، وبالتالي لو عايز تعدل في جزء معين، بتعدل عليه من غير ما تأثر على الأجزاء التانية.

📌 سهولة التطوير والصيانة: كل مكون في الـ MVC بيشتغل بشكل مستقل، فلو في مشكلة في العرض (الـ View) مش لازم تلمس الكود الخاص بالبيانات (الـ Model) أو التحكم (الـ Controller).

📌 إعادة استخدام الكود: بما إن الكود متقسم ومنظم، ممكن تعيد استخدام أجزاء معينة منه في مشاريع تانية.


نمط الـ MVC هيسهل عليك الدنيا خصوصًا لو شغال على مشاريع كبيرة ومعقدة لأنه بيفصل بشكل واضح بين الأدوار المختلفة لكل مكون في التطبيق.

ده هيوفر عليك وقت ومجهود وهتقدر تعمل تعديل في التطبيق بتاعك بكل سهولة.


بالتوفيق يا بطل 💪🏻