ConstructiCat Logo
CodeBust.
Browse section ▾

تنزيل التابع (Push Down Method).

Problem

هل السلوك المطبق في الفئة الفائقة يُسخدم من قِبل فئة فرعية واحدة فقط (أو عدد قليل منها)؟

Solution

انقل هذا السلوك إلى الفئات الفرعية.

##Example

قبل
Push Down Method - Before
بعد
Push Down Method - After

##Why Refactor

في البداية، كان الهدف من تابع معين أن يكون عاماً لجميع الفئات، ولكنه في الواقع يُسخدم في فئة فرعية واحدة فقط. يمكن أن يحدث هذا الموقف عندما تفشل الميزات المخطط لها في التحقق.

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

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

##Benefits

  • يحسن تماسك الفئات. حيث يقع التابع في المكان الذي تتوقع رؤيته فيه.

##How to Refactor

  1. صرح بالتابع في فئة فرعية وانسخ الكود الخاص به من الفئة الفائقة.

  2. أزل التابع من الفئة الفائقة.

  3. ابحث عن جميع الأماكن التي يُسخدم فيها التابع وتأكد من أنه يُستدعى من الفئة الفرعية المطلوبة.