شعار ConstructiCat
CodeBust.
تصفح القسم ▾

رفع التابع (Pull Up Method).

المشكلة

تحتوي الفئات الفرعية على أساليب تؤدي عملاً متشابهاً.

الحل

اجعل التوابع متطابقة ثم انقلها إلى الفئة الفائقة المناسبة.

##مثال

قبل
class Employee {
  String name;
}
class Salesman extends Employee {
  String getName() { return name; }
}
class Engineer extends Employee {
  String getName() { return name; }
}
بعد
class Employee {
  String name;
  String getName() { return name; }
}
class Salesman extends Employee {}
class Engineer extends Employee {}

##لماذا نعيد الهيكلة

نمت الفئات الفرعية وتطوّرت بصورة مستقلة، مما أدى إلى ظهور حقول وأساليب متطابقة أو شبه متطابقة.

##الفوائد

  • يتخلص من الكود المكرر. إذا كنت بحاجة إلى إجراء تغييرات على تابع، فمن الأفضل القيام بذلك في مكان واحد بدلاً من الاضطرار إلى البحث عن جميع التوابع المكررة في الفئات الفرعية.

  • يمكن أيضاً استخدام تقنية إعادة الهيكلة هذه إذا قامت فئة فرعية، لسبب ما، بإعادة تعريف تابع للفئة الفائقة ولكنه يؤدي نفس العمل جوهرياً.

##كيفية إعادة الهيكلة

  1. ابحث عن التوابع المتشابهة في الفئات الفرعية. وإذا لم تكن متطابقة، فقم بصياغتها لتتطابق مع بعضها البعض.

  2. إذا كانت التوابع تستخدم مجموعة معاملات مختلفة، فضع المعاملات بالشكل الذي تريد رؤيته في الفئة الفائقة.

  3. انسخ التابع إلى الفئة الفائقة. هنا قد تجد أن كود التابع يستخدم حقولاً وتوابع موجودة فقط في الفئات الفرعية وبالتالي فهي غير متوفرة في الفئة الفائقة. لحل هذه المشكلة، يمكنك:

  4. أزل التوابع من الفئات الفرعية.

  5. تحقق من المواقع التي يتم فيها استدعاء التابع. في بعض الأماكن، قد تتمكن من استبدال استخدام الفئة الفرعية بالفئة الفائقة.