سحب التابع لأعلى (Pull Up Method)

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث

المشكلة

تحتوي الأصناف الفرعية على توابع تؤدي نفس العمل.

الحل

جعل التوابع متطابقة ثم نقلها إلى الصنف الأعلى ذي الصلة.

مثال

قبل إعادة التصميم

يحتوي الصنفان الفرعيان Soldier و Tank على التابع ()getHealth الذي يؤدي نفس العمل:

تحتوي الأصناف الفرعية على التابع getHealth تؤدي نفس العمل.
تحتوي الأصناف الفرعية على التابع ()getHealth تؤدي نفس العمل.

بعد إعادة التصميم

نقل التابع ()getHealth إلى الصنف Unit الأب وإزالته من الأصناف الفرعية:

نقل التابع getHealth إلى الصنف الفائق.
نقل التابع ()getHealth إلى الصنف الأعلى.

لم إعادة التصميم؟

تنمو الأصناف الفرعية وتتطور بشكل مستقل عن بعضها البعض، مما يتسبب في ظهور حقول وتوابع متطابقة (أو شبه متطابقة).

فوائد تطبيق الحل

  • التخلص من تكرار الشيفرة. إذا كنت بحاجة إلى إجراء تغييرات على تابع ما، فمن الأفضل أن تفعل ذلك في مكان واحد من أن تبحث عن جميع نسخ التابع في الأصناف الفرعية.
  • ويمكن أيضا استخدام تقنية إعادة التصميم هذه إذا أعاد صنفٌ فرعي تعريف تابع من الصنف الأب له، لسبب ما، ولكنه يؤدي نفس العمل في الأساس.

آلية الحل

  1. تحقق من التوابع المماثلة في الأصناف الفرعية. إذا لم تكن متطابقة، قم بتنسيقها لتتطابق مع بعضها البعض.
  2. إذا استخدَمت التوابعُ مجموعة مختلفة من المعاملات، ضع المعاملات في الشكل الذي تريد رؤيته في الصنف العلوي.
  3. انسخ التابع إلى الصنف العلوي (الصنف الأب). هنا قد تجد أن شيفرة التابع تستخدم الحقول والتوابع التي توجد فقط في الأصناف الفرعية وبالتالي ليست متاحة في الصنف العلوي. ولحل هذا، يمكنك:
    • بالنسبة للحقول: استخدم إما سحب الحقل لأعلى أو التغليف الداخلي للحقول لإنشاء المُتلقيات والضوابط في الأصناف الفرعية؛ ثم عرِّف هذه المُتلقيات بشكل تجريدي في الأصناف العلوية.
    • بالنسبة للتوابع: استخدام إما سحب التابع أو عرِّف لهم تابعًا مجردًا في الصنف العلوي (لاحظ أن الصنف سيصبح مجردًا إذا لم يكن كذلك مسبقًا).
  4. أزِل التابع من الصنف الفرعي.
  5. تحقق من المواقع التي يستدعى فيها التابع. قد تكون قادرًا في بعض الأماكن على استبدال استخدام الصنف الفرعي بالصنف الأب.

انظر أيضًا

مصادر