رفع التابع (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 {}##لماذا نعيد الهيكلة
نمت الفئات الفرعية وتطوّرت بصورة مستقلة، مما أدى إلى ظهور حقول وأساليب متطابقة أو شبه متطابقة.
##الفوائد
-
يتخلص من الكود المكرر. إذا كنت بحاجة إلى إجراء تغييرات على تابع، فمن الأفضل القيام بذلك في مكان واحد بدلاً من الاضطرار إلى البحث عن جميع التوابع المكررة في الفئات الفرعية.
-
يمكن أيضاً استخدام تقنية إعادة الهيكلة هذه إذا قامت فئة فرعية، لسبب ما، بإعادة تعريف تابع للفئة الفائقة ولكنه يؤدي نفس العمل جوهرياً.
##كيفية إعادة الهيكلة
-
ابحث عن التوابع المتشابهة في الفئات الفرعية. وإذا لم تكن متطابقة، فقم بصياغتها لتتطابق مع بعضها البعض.
-
إذا كانت التوابع تستخدم مجموعة معاملات مختلفة، فضع المعاملات بالشكل الذي تريد رؤيته في الفئة الفائقة.
-
انسخ التابع إلى الفئة الفائقة. هنا قد تجد أن كود التابع يستخدم حقولاً وتوابع موجودة فقط في الفئات الفرعية وبالتالي فهي غير متوفرة في الفئة الفائقة. لحل هذه المشكلة، يمكنك:
-
بالنسبة للحقول: استخدم إما رفع الحقل (Pull Up Field) أو التغليف الذاتي للحقل (Self Encapsulate Field) لإنشاء توابع الجلب والتعيين (Getters and Setters) في الفئات الفرعية؛ ثم صرح بهذه التوابع بشكل مجرد (Abstractly) في الفئة الفائقة.
-
بالنسبة للتوابع: استخدم إما رفع التابع (Pull Up Method) أو صرح بتوابع مجردة (Abstract methods) لها في الفئة الفائقة (لاحظ أن فئتك ستصبح مجردة إذا لم تكن كذلك من قبل).
-
-
أزل التوابع من الفئات الفرعية.
-
تحقق من المواقع التي يتم فيها استدعاء التابع. في بعض الأماكن، قد تتمكن من استبدال استخدام الفئة الفرعية بالفئة الفائقة.