سؤال

أنا مألوفة جدا مع نمط القيادة ، ولكن أنا حتى الآن لم أفهم الفرق من الناحية النظرية بين Functor و أمر.على وجه الخصوص, أنا أفكر في تطبيقات جافا.على حد سواء هي في الأساس البرمجة "الأفعال" تمثيل الكائنات.ومع ذلك ، في حالة functors, كما رأيت من بعض الأمثلة الطبقة الداخلية من مجهول تطبيقات يبدو المشتركة.يمكن لأي شخص هناك توضيح هذا الأمر لي بشكل جيد ؟

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

المحلول

وA functor هو مفهوم "مستوى جملة" - أنه حزم عن رمز في كائن يمكن علاجها نحويا مثل مؤشر دالة - أي أنها يمكن أن تكون 'يدعى' عن طريق وضع قائمة المعلمات بين قوسين بعد ذلك. في C ++ التي يمكن أن تجعل فئة من functor بتجاوز المشغل ().

وأمر في نمط القيادة هو كائن حزم بعض الوظائف runnable، ولكن ليس هناك شرط أن يكون functor. على سبيل المثال، يمكن أن يكون فئة التي تطبق على ICommand واجهة، مما يتيح قيادتها ليتم تشغيلها من خلال الدعوة دو ().

نصائح أخرى

وA functor هو تنفيذ، وسيلة لجعل تتصرف الكائن مثل وظيفة.

وو"نمط القيادة 'هو نمط التصميم.
وfunctor هو أحد السبل لتنفيذ "نمط القيادة".

هنا يأتي الجواب من صندوق القناص:

Coplien يصف كيفية تنفيذ functors, الأشياء التي هي من المهام ، في C++ [Cop92].وقال انه يحقق درجة الشفافية في استخدام الحمولة الزائدة الدالة استدعاء المشغل (المشغل()).الأمر النمط مختلفة ؛ وتركز على الحفاظ على ملزمة بين المتلقي وظيفة (أي العمل) ، ليس فقط الحفاظ على وظيفة.

من وصف أباتشي العموم Functor الصفحة:


أ functor هي الدالة التي يمكن التلاعب بها كما كائن أو كائن يمثل واحدة عامة وظيفة.

Functors دعم وتشجيع عددا من أقوى تقنيات البرمجة بما في ذلك:

  • البرمجة في نمط وظيفي
  • أعلى ترتيب الوظائف
  • الداخلية التكرار
  • وإعادة التخصص من خلال تكوين بدلا من الميراث و الحمولة الزائدة
  • عامة "رد" أو "نقطة الإرشاد" واجهات برمجة التطبيقات
  • عامة "فلاتر" أو المسند واجهات برمجة التطبيقات
  • العديد من "السلوكية" أنماط التصميم ، مثل زائر استراتيجية سلسلة من المسؤولية ، إلخ.

ووفقا لصندوق جلوبل القناص (عصابة الأربعة) استشهد تعريف (عن طريق Comptrol)، Functor والقيادة نوعان من أنماط مختلفة.

وكما ذكر سابقا، Functor يمثل الفئة التي تحتوي على أسلوب خدمة، وبعبارة أخرى: المسؤولية الرئيسية عن الطبقة functor لتخزين منطق محدد تنفيذها في طرقها الخاصة. وبالتالي، يمكن أن نفكر في functor كيف حاوية للمنطق الداخلي أسلوب خاص به في. تاريخيا، المواليد Functor لفي مواصفات جاوة لم يتم تقديم تنفيذ و / أو مفهوم "مؤشر الدالة '، وهو أمر مفيد جدا في سياق عمليات الاسترجاعات مسجلة (تنفيذ محددة لنمط مراقب).

ونمط القيادة يمثل نمط التصميم تهدف إلى فصل كيان المنادي من جهاز استقبال واحد. وهي تستخدم أساسا عند الحاجة إليها لdecuple الإجراءات (توليد الأحداث) من المستمعين العمل (اعتقد أن اجهات). لديه طريقة مسؤولة عن excecution من عملية معينة (اعتمادا على تنفيذ أمر معين من الفائقة الخاصة) في اشارة الى جهاز استقبال كائن محدد؛ في تعريف المعلن، يمكن تعريف طريقة التنفيذ بأنها "ليست ذكية"، في الواقع مع تنفيذ الذكية يمكن أن تكون نفسها لتنفيذ المنطق العملي بدلا من تفويض ذلك إلى كائن ثالث. عندما يكون لدينا أسلوب التنفيذ الذكية، نقوم بتطبيق functor، ونحن نضع في functor (محددة للتنفيذ الأوامر الفرعي) في سياق نمط القيادة.

وآمل أن يكون هذا سوف يكون من المفيد بالنسبة لك.

وأنا أفكر في functor باعتبارها عنصرا من نمط الأوامر، التي تشمل أيضا البنية التحتية الأخرى مثل المنادي والقيادة المتلقين.

ويستخدم نمط القيادة في جاوة لأننا لم يكن لديك الإغلاق في جاوة. المنفذون هو محاولة لتنفيذ الإغلاق.

ولغة مع إغلاق ليست بحاجة الى نمط القيادة.

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