تكوين دالة القالب.
تنفذ فئاتك الفرعية خوارزميات تحتوي على خطوات متشابهة بنفس الترتيب.
انقل هيكل الخوارزمية والخطوات المتطابقة إلى فئة عليا، واترك تنفيذ الخطوات المختلفة في الفئات الفرعية.
##Example


##Why Refactor
يتم تطوير الفئات الفرعية بالتوازي، وأحياناً بواسطة أشخاص مختلفين، مما يؤدي إلى تكرار الكود وحدوث أخطاء وصعوبات في صيانة الكود، حيث يجب إجراء كل تغيير في جميع الفئات الفرعية.
##Benefits
-
لا يشير تكرار الكود دائماً إلى حالات النسخ/اللصق البسيطة. غالباً ما يحدث التكرار على مستوى أعلى، مثل عندما يكون لديك دالة لفرز الأرقام ودالة لفرز مجموعات الكائنات التي تختلف فقط في مقارنة العناصر. يؤدي إنشاء دالة قالب (template method) إلى التخلص من هذا التكرار عن طريق دمج خطوات الخوارزمية المشتركة في فئة عليا وترك الاختلافات فقط في الفئات الفرعية.
-
تكوين دالة قالب هو مثال على مبدأ المفتوح/المغلق قيد العمل. عندما يظهر إصدار جديد من الخوارزمية، ما عليك سوى إنشاء فئة فرعية جديدة؛ ولا يلزم إجراء أي تغييرات على الكود الحالي.
##How to Refactor
-
قم بتقسيم الخوارزميات في الفئات الفرعية إلى الأجزاء المكونة لها والموصوفة في دوال منفصلة. يمكن أن تساعد طريقة استخراج الدالة في ذلك.
-
يمكن نقل الدوال الناتجة المتطابقة لجميع الفئات الفرعية إلى فئة عليا عبر طريقة رفع الدالة.
-
يمكن إعطاء الدوال غير المتشابهة أسماء متسقة عبر طريقة إعادة تسمية الدالة.
-
انقل تواقيع (signatures) الدوال غير المتشابهة إلى فئة عليا كدوال مجردة (abstract methods) باستخدام طريقة رفع الدالة. واترك تطبيقاتها (implementations) في الفئات الفرعية.
-
وأخيراً، ارفع الدالة الرئيسية للخوارزمية إلى الفئة العليا. الآن يجب أن تعمل مع خطوات الدالة الموصوفة في الفئة العليا، سواء كانت حقيقية أو مجردة.