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

استخراج الفئة العليا.

المشكلة

لديك فئتان تحتويان على حقول ودوال مشتركة.

الحل

أنشئ فئة عليا مشتركة لهما وانقل إليها جميع الحقول والدوال المتطابقة.

##مثال

قبل
class Employee {
  String name;
  double monthlyCost;
  double getAnnualCost() { return monthlyCost * 12; }
}
class Department {
  String name;
  double monthlyCost;
  double getAnnualCost() { return monthlyCost * 12; }
}
بعد
class Party {
  String name;
  double monthlyCost;
  double getAnnualCost() { return monthlyCost * 12; }
}
class Employee extends Party {}
class Department extends Party {}

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

يحدث أحد أنواع تكرار الكود عندما تؤدي فئتان مهام متشابهة بنفس الطريقة، أو تؤديان مهام متشابهة بطرق مختلفة. توفر الكائنات آلية مدمجة لتبسيط مثل هذه المواقف عبر الوراثة (inheritance). ولكن في كثير من الأحيان يظل هذا التشابه دون أن يلاحظه أحد حتى يتم إنشاء الفئات، مما يتطلب إنشاء هيكل وراثة لاحقاً.

##الفوائد

  • إلغاء تكرار الكود. الحقول والدوال المشتركة الآن “تعيش” في مكان واحد فقط.

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

  1. أنشئ فئة عليا مجردة (abstract superclass).

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

  3. ابحث عن الأماكن في كود العميل حيث يمكن استبدال استخدام الفئات الفرعية بفئتك الجديدة (مثل تعريفات الأنواع).