استبدال الفئة الفرعية بحقول.
لديك فئات فرعية تختلف فقط في دوالها (التي تعيد قيمًا ثابتة).
استبدل الدوال بحقول في الفئة الأب واحذف الفئات الفرعية.
##Example


##Why Refactor
في بعض الأحيان، تكون إعادة الهيكلة هي الحل الأمثل لتجنب كود النوع (type code).
في إحدى هذه الحالات، قد يختلف التسلسل الهرمي للفئات الفرعية فقط في القيم التي تعيدها دوال معينة. هذه الدوال ليست حتى نتيجة لعملية حسابية، ولكنها محددة بشكل صارم في الدوال نفسها أو في الحقول التي تعيدها الدوال. لتبسيط بنية الفئة، يمكن ضغط هذا التسلسل الهرمي في فئة واحدة تحتوي على حقل واحد أو عدة حقول بالقيم المطلوبة، بناءً على الموقف.
قد تصبح هذه التغييرات ضرورية بعد نقل كمية كبيرة من الوظائف من تسلسل هرمي للفئات إلى مكان آخر. لم يعد التسلسل الهرمي الحالي ذو قيمة كبيرة وأصبحت فئاته الفرعية مجرد وزن زائد.
##Benefits
- يبسط بنية النظام. يعد إنشاء فئات فرعية أمرًا مبالغًا فيه إذا كان كل ما تريد القيام به هو إرجاع قيم مختلفة في دوال مختلفة.
##How to Refactor
-
طبق تقنية استبدال الباني بدالة مصنع (Replace Constructor with Factory Method) على الفئات الفرعية.
-
استبدل استدعاءات باني الفئة الفرعية باستدعاءات دالة المصنع للفئة الفائقة (superclass).
-
في الفئة الفائقة، أعلن عن حقول لتخزين قيم كل من دوال الفئة الفرعية التي تعيد قيمًا ثابتة.
-
أنشئ بانيًا محميًا (protected constructor) للفئة الفائقة لتهيئة الحقول الجديدة.
-
أنشئ بانيات الفئة الفرعية الحالية أو عدلها بحيث تستدعي الباني الجديد للفئة الأب وتمرر القيم ذات الصلة إليه.
-
قم بتنفيذ كل دالة ثابتة (constant method) في الفئة الأب بحيث تعيد قيمة الحقل المقابل. ثم قم بإزالة الدالة من الفئة الفرعية.
-
إذا كان لباني الفئة الفرعية وظائف إضافية، فاستخدم تقنية ضمنية الدالة (Inline Method) لدمج الباني في دالة المصنع للفئة الفائقة.
-
احذف الفئة الفرعية.