سؤال

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

أحاول فهم كيفية عمل نمط الأوامر.لقد بحثت في كل مكان عن أمثلة ، لكنني ما زلت في حيرة.ما هي مسؤوليات كل فئة في النموذج؟هل تقوم ConcreteCommands بالفعل بتنفيذ الإجراء أم أنها تحمل المعلومات اللازمة وترسلها إلى الوجهة المناسبة ليتم تنفيذها بالفعل؟

هل كانت مفيدة؟

المحلول

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

في هذه الحالة ، أنت عميل .الورقة هي أمر الخرسانة . جهاز الاستقبال هو الكائن الذي ذكرته في الورقة.و Invoker هو صديقك.

يمكنك اختيار الشروط التي بموجبها سيتم فتح المغلف باختيار Invoker .

نصائح أخرى

هناك نوعان مختلفان من أنماط الأوامر التي رأيتها.

الأول هو واجهة بسيطة تستخدم لتنفيذ مهمة أو أمر.واجهة Java Runnable هي أحد الأمثلة.التطبيقات لها طريقة بسيطة مثل "doSomething ()" تسمح بتنفيذ هذه المهمة أو الأمر بواسطة مكون آخر في النظام.

يذهب إصدار الكتاب المدرسي من نمط الأمر إلى أبعد من ذلك لوصف المكونات الأخرى للنظام التي ستستخدم تنفيذ الأمر الملموس.هذا هو المكان الذي تأتي منه المصطلحات الأخرى مثل Invoker و Receiver و Client.راجع ويكيبيديا للحصول على مزيد من المعلومات حول هذا: http://en.wikipedia.org/wiki/Command_pattern

لا تدع نمط التصميم هذا يربكك ، فالأمر بسيط مثل وجود واجهة بها تعريف "doSomething ()".

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

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

افترض أن لديك تحكمًا في الزر: عند الضغط عليه ، يجب تنفيذ بعض الإجراءات.هذا الإجراء هو ConcreteCommand.يمكن أن يكون مؤشرًا عاديًا لوظيفة (في C أو C ++).ولكن إذا احتاج إلى معلومات إضافية من ، على سبيل المثال ، عناصر تحكم أخرى أو مدخلات مستخدم ، فيجب أيضًا التقاطها في مكان ما.لهذا السبب ، من الملائم أن يكون لديك كائن من شأنه التقاط هذه المعلومات الإضافية.

كأثر جانبي ، يمكنك تخزين الأوامر في حاوية ما وتأخير تنفيذها ، أو يمكنك تتبع الأوامر التي تم تنفيذها ، أو يمكنك التراجع عنها لاحقًا ، وما إلى ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top