تكوين قالب تابع (Form Template Method)

من موسوعة حسوب

المشكلة

تُنفِّذ الأصناف الفرعية خوارزميات تحتوي على خطوات مماثلة في نفس الترتيب.

الحل

نقل بنية الخوارزمية والخطوات المتطابقة إلى الصنف الأب، وترك تنفيذ الخطوات المختلفة في الأصناف الفرعية.

مثال

قبل إعادة التصميم

احتواء الصنفين الفرعيين ResidentialSite و LifelineSite على نفس الخوارزمية:

تُنفِّذ الأصناف الفرعية خوارزميات تحتوي على خطوات مماثلة في نفس الترتيب.
تُنفِّذ الأصناف الفرعية خوارزميات تحتوي على خطوات مماثلة في نفس الترتيب.

بعد إعادة التصميم

نقل الخوارزمية إلى الصنف Site الأب للصنفين الفرعيين:

تُنقل بنية الخوارزمية والخطوات المتطابقة إلى الصنف الفائق، ويُترك تنفيذ الخطوات المختلفة في الأصناف الفرعية.
تُنقل بنية الخوارزمية والخطوات المتطابقة إلى الصنف الأب، ويُترك تنفيذ الخطوات المختلفة في الأصناف الفرعية.

لم إعادة التصميم؟

تتطور الأصناف الفرعية بالتوازي، وأحيانًا من قبل أشخاص مختلفين، مما يؤدي إلى تكرار الشيفرة والأخطاء، وصعوبات في صيانة الشيفرة، لأنَّ كل تغيير يجب أن يحدث في جميع الأصناف الفرعية.

فوائد تطبيق الحل

  • تكرار الشيفرة لا يشير دائمًا إلى حالات بسيطة من النسخ واللصق. غالبًا ما يحدث التكرار في مستوى أعلى، مثل عندما يكون لديك تابع لترتيب الأرقام وتابع لترتيب مجموعات الكائنات التي تُميَّزها فقط عن طريق مقارنة العناصر. يلغي إنشاء قالب تابع هذا التكرار من خلال دمج خطوات الخوارزمية المشتركة في صنف أب وترك الاختلافات فقط في الأصناف الفرعية.
  • ويمثل إنشاء قالب تابع مثالًا على مبدأ المفتوح/المغلق بشكل فعلي. وعندما تظهر نسخة خوارزمية جديدة، تحتاج فقط لإنشاء صنف فرعي جديد؛ ولا يلزم إجراء أي تغييرات على الشيفرة الموجودة.

آلية الحل

  1. قسِّم الخوارزميات في الأصناف الفرعية إلى الأجزاء المكونة لها موصوفةً في توابع منفصلة. يمكن أن يساعد استخراج التوابع في هذا.
  2. يمكن نقل التوابع الناتجة المتطابقة في جميع الأصناف الفرعية إلى صنفٍ أبٍ باستخدام سحب التابع لأعلى.
  3. يمكن إعطاء التوابع غير المتشابهة أسماء متسقة باستخدام إعادة تسمية التوابع.
  4. انقل توقيعات التوابع غير المتشابهة إلى صنف أب كأصناف مجردة باستخدام سحب التابع لأعلى. اترك تطبيقاتهم في الأصناف الفرعية.
  5. وأخيرًا، اسحب التابع الرئيسي للخوارزمية لأعلى إلى الصنف الأب. الآن يجب أن تعمل مع خطوات التابع الموصوف في الصنف الفائق، سواء حقيقي أو مجرد.

انظر أيضًا

مصادر