الوسيط (Middle Man)

من موسوعة حسوب
مراجعة 14:23، 30 سبتمبر 2018 بواسطة Nourtam (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:الوسيط (Middle Man)}}</noinclude> == توصيف المشكلة == عندما يكون للصنف (class) مهمةٌ واحدةٌ فقط...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

توصيف المشكلة

عندما يكون للصنف (class) مهمةٌ واحدةٌ فقط وهي تفويض المهام (delegation) لصنفٍ آخر، فما أهمية وجوده بالأصل؟

أسبابها

  • قد تنتج المشكلة عن التخلُّص المفرط من الاستدعاءات المتسلسلة كعلاجٍ لمشكلة سلاسل الرسائل (message chains).
  • أو قد تنتُج عن النقل التدريجيّ للصنف (class) إلى أصناف أخرى ليبقى الصنف الأصليّ فارغًا إلا من أوامر التفويض (delegation).

وما الحل؟

حذف الوسيط (remove middle man) إن كانت معظم أصناف التابع (method's classes) تفوِّض المهام (delegate) إلى صنفٍ آخر.

إليك المزيد

ستحصل بحلِّ المشكلة على شيفرةٍ أقصر.

تجاهل المشكلة

يجب ألّا يُحذَف الوسيطُ الموجود لتحقيق هدفٍ ما، مثل:

  • تجنُّب الاعتماديّة ما بين الأصناف (interclass dependencies).
  • استخدامه في نماذج التصميم (Design Patterns) مثل: نموذج Proxy أو نموذج Decorator.

انظر أيضًا

مصادر