16386295843722872
recent
أخبار ساخنة

أنماط التصاميم. نمط الأمر

الخط
بعد تغطية البعض من أنماط (نماذج) التصاميم الانشائية و الهيكلية . إنتقلنا للتحدث عن الأنماط السلوكية حيث بدأنا بالنمط السلوكي الأول في هذه المجموعة (النمط أو النموذج الأستراتيجي). لقد تعلمنا في الأنماط الإنشائية كيفية إنشاء الأغراض, ومن النماذج الهيكلية كيفية ترتيب وهيكلة الصفوف لتساعدنا في بناء تطبيق أفضل.
في هذه المقالة شو نقوم بالتعرف على نمط الأمر. الإسم بشكل عام يعرف نفسه, هذا النمط يساعد على تنفيد أوامر مختلفة. التعريف لهذا النمط بالويكبيديا هو كالتالي:
بشكل عام يتم إشتراك عدة عناصر في نموذج الأمر. سوف نقوم بالتعرف على كل عنصر على حدا مع كتابة كود (ترميز) برمجي خاص بها , ومن ثم سوف نقوم بتجميع العناصر لتشكيل الكود الكامل لنمط الأمر. المثال الأكثر تطرقا عند المرور بنموذج الأمر هو مثال تشغيل و إطفاء الراديو on و off . دعونا نتعرف على العناصر المكونة لهذا النمط
وهو الصف الأساسي, بمعنى آخر , هو الكود الأساسي أو مايعرف بال actual implementation وهو عبارة عن مجموعة أوامر يقوم الصف بتنفيذها. يمكن أيضا الحفاظ على الأوامر التي تم تنفيذها, ولكن هذه المهمة ليست جزء من نموذج الأمر لذلك سوف نتحدث عنها لاحقا في مقالة النموذج التذكاري.

هذا العنصر هو عبارة عن عدة صفوف (صف لكل أمر) وهو يحتوي على المعلومات اللازمة لتنفيذ الحدث (الأمر) الخاص به. كل صف من هذه الصفوف يقوم بإستدعاء الميثود المطلوبة منه من المستقبل receiver. مايميز هذه الصفوف هي إنها جميعها تقوم بوراثة واجهة radioCommand بحيث تقوم بتغليف كل أمر من أوامر المستقبل ضمن ميثود موحدة في هذه الصفوف execute

هذا العنصر يتصرف تماما كالزبون (يتخذ قرار ما سيقوم بفعله). يختار عنصر الزبون الأمر الذي يريد أن ينفذه ويسنده لمتحول. هذا العنصر لايكترث بمن سيقوم تنفيذ هذا الأمر, ولا بكيفيه تنفيذه. في هذا المثال قمت بإتخاذ الأمر وإسناده كقيمة ثابتة hard-coded . ولكن القيمة ممكن أن تكون بإي شكل , ممكن أن يتم أخذها من فورم تعبئة POST أو من أي URL.


هذا العنصر يقوم بإستهلال (تهيئة) العملية بشكل كامل. حيث يقوم بأخذ المتحولات من الزبون client و إستدعاء الميثود لتنفذ الأمر المطلوب.


عند تنفيد الكود السابق سوف نلاحظ بأن الخرج هو "Turning Off Radio" . طبعا لأن الزبون هو الذي حدد هذا الأمر في الفقرة السابقة. الآن نستطيع تنفيذ أوامر اُخرى بنفس الطريقة. إذا كان الزبون حدد الحدث ك turnOnRadio. سيكون الخرج "Turning On Radio". الموضوع بهذه البساطة!

دعونا نجمع جميع العناصر في مكان واحد لنرى كيف يتم تنفيذ نموذج الأمر.



قبل قليل كان لدينا فقط تردد واحد للراديو الخاص بنا, لذلك اكتفينا بإطفائه وتشغيله. لكن دعونا نتخيل مع مرور الوقت أنه قد اصبح لدينا عدة ترددات , نحن الآن بحاجة إلى ميثودات إضافية tuneUp و tuneDown لنرى كيف سوف نقوم بإضافة هذه الأوامر.

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

إضافة أمر جديد يتطلب التعديل في مكانين.الأمر الأول هو أن نقوم بإضافة الميثود الجديدة الخاصة بالأمر المطلوب في التطبيق والتي تحتوي المنطق الخاص بالأمر , بمعنى آخر يجب إضافة التطبيق للميثود في عنصر المستقبل. أما الامر الثاني فهو إنشاء صف جديد لإستدعاء الميثود السابقة (وهو صف في عنصر الأمر كما سميناه سابقا) ويجب لهذا الصف ان يقوم بوراثة الواجهة radioCommand وإستدعاء الميثود الموجودة في عنصر المستقبل.

يجب علينا إستخدام نموذج الأمر عندما يكون لدينا أوامر متعددة نريد تنفيذها, ولا يهم إن كانت هذه الأوامر مترابطة أم لا









ليست هناك تعليقات
إرسال تعليق

إرسال تعليق

نموذج الاتصال
الاسمبريد إلكترونيرسالة