تعريف:
إطار لتحديد خوارزمية في عملية ما ، مما يؤدي إلى تأخير بعض الخطوات إلى فئة فرعية. يتيح ذلك للفئة الفرعية إعادة تعريف خطوات معينة محددة للخوارزمية دون تغيير بنية الخوارزمية.
هذا يبدو راقية جدا ، فهمي:
1. تعلن الفئة الأصل عن العديد من الطرق المجردة (الأساليب الأساسية) والعديد من الطرق المحددة (طرق القالب)
2. الطريقة التجريدية هي خطوة من الخوارزمية (العملية) التي يتم تنفيذها في فئة فرعية
3. طريقة القالب هي إطار خوارزمية (العملية). تم الاتفاق في فئة الأصل على تنفيذ المكالمات على الأساليب الأساسية وإكمال المنطق الثابت.
4. يتم تعريف هيكل الخوارزمية (العملية) في الفئة الأصل ، ويتم تنفيذ تفاصيل التنفيذ المحددة في الفئة الفرعية.
ملاحظة: من أجل منع العمليات الضارة ، تتم إضافة طريقة القالب العام مع النهائي ، ويتم إعادة كتابة.
مخطط الطبقة العامة:
في الواقع ، فإن طريقة القالب هي نمط مستخدم بشكل متكرر في البرمجة. دعونا نلقي نظرة أولاً على مثال. في يوم من الأيام ، حصل المبرمج A على مهمة: أعط مجموعة من الأعداد الصحيحة ، وفرز الأرقام في الصفيف من صغير إلى كبير ، ثم طباعة النتائج المرتبة. بعد التحليل ، يمكن تقسيم هذه المهمة تقريبًا إلى جزأين: الفرز والطباعة. من السهل تنفيذ وظيفة الطباعة ، لذا فإن الفرز مزعج بعض الشيء. لكن على طريقة ، أولاً ، أكمل وظيفة الطباعة وابحث عن شخص آخر للقيام بوظيفة الفرز.
Abstract Class AbstractSort { / *** Sort Array من صفيف صغير إلى كبير* param* / فرز الفراغ التجريدي المحمي (int [] Array) ؛ public void showsortresult (int [] array) {this.sort (array) ؛ System.out.print ("Sort Result:") ؛ لـ (int i = 0 ؛ i <array.length ؛ i ++) {system.out.printf ("٪ 3s" ، array [i]) ؛ }}}بعد الكتابة ، وجد زميلًا تخرج للتو وبدأ العمل وقال: هناك مهمة ، لقد كتبت بالفعل المنطق الرئيسي ، حتى تتمكن من تنفيذ المنطق المتبقي. لذلك أعطيت فئة AbstractSort إلى B واترك B الكتابة لتنفيذها. استغرق ب لها ورأيتها. كان الأمر بسيطًا جدًا. تم في 10 دقائق. الرمز كما يلي:
class cretcretesort يمتد الملخصات {override proted void sort (int [] array) {for (int i = 0 ؛ i <array.length-1 ؛ i ++) {selectSort (Array ، i) ؛ }} private void selectSort (int [] array ، int index) {int minvalue = 32767 ؛ // min value variable int indexmin = 0 ؛ // دقيقة فهرس فهرس المتغير int temp ؛ // متغير التدريج لـ (int i = index ؛ i <array.length ؛ i ++) {if (array [i] <minvalue) {// أوجد القيمة الحد الأدنى minvalue = array [i] ؛ // تخزين الحد الأدنى لقيمة indexmin = i ؛ }} temp = array [index] ؛ // مبادلة اثنين من قيم الرقم صفيف [index] = صفيف [indexMin] ؛ صفيف [indexMin] = temp ؛ }}بعد كتابتها ، أعطها إلى A ، وسوف تأخذها لتشغيلها:
عميل الفئة العامة {public static int [] a = {10 ، 32 ، 1 ، 9 ، 5 ، 7 ، 12 ، 0 ، 4 ، 3} ؛ // preset Data Array public static void main (string [] args) {AbstractSort s = new cretesort () ؛ S.ShowsorTresult (A) ؛ }} نتائج التشغيل:
نتائج الفرز: 0 1 3 4 5 7 9 10 12 32
هيكل نمط طريقة القالب
يتكون نمط طريقة القالب من فئة مجردة وفئات تنفيذ (أو مجموعة) من خلال هياكل الميراث. تنقسم الطرق في الفصول التجريدية إلى ثلاثة أنواع:
الطريقة التجريدية: تعلن فئة الأصل فقط ولكنها لا تنفذها ، ولكنها تحدد المواصفات ، ثم تنفذها من قبل فئة الفرعية.
طريقة القالب: تم الإعلان عنها وتنفيذها بواسطة فئات مجردة. بشكل عام ، تُحدد طرق القالب طرقًا مجردة لإكمال الوظائف المنطقية الرئيسية ، ويتم تعريف طرق القالب في الغالب على أنها الأنواع النهائية ، مما يشير إلى أنه لا يمكن إعادة كتابة الوظائف المنطقية الرئيسية في الفئات الفرعية.
طريقة الخطاف: تم الإعلان عنها وتنفيذها بواسطة فئة مجردة. ومع ذلك ، يمكن تمديد الفئات الفرعية ، ويمكن أن تؤثر الفئات الفرعية على منطق طرق القالب عن طريق تمديد طرق الخطاف.
تتمثل مهمة الفصول المجردة في بناء إطار منطقي ، والذي عادة ما يكتبه أفراد ذوي خبرة ، لأن جودة الفصول التجريدية تحدد مباشرة ما إذا كان البرنامج مستقرًا.
يتم استخدام فئات التنفيذ لتنفيذ التفاصيل. تكمل طريقة القالب في الفئات التجريدية منطق العمل من خلال تنفيذ أساليب تمديد الفصل. طالما أن طريقة التمديد في فئة التنفيذ تجتاز اختبار الوحدة ، فلن يكون للوظيفة الإجمالية عمومًا أخطاء كبيرة في ظل فرضية أن طريقة القالب صحيحة.
مزايا وضع طريقة القالب:
1. تغليف الجزء غير المتغير وتوسيع الجزء المتغير
2. استخراج الجزء العام من الكود لسهولة الصيانة
3. يتم التحكم في السلوك من قبل فئة الوالدين وتنفيذها من قبل فئة الطفل
السيناريوهات المعمول بها لوضع طريقة القالب:
1. فئات فرعية متعددة لها أساليب عامة والمنطق هو نفسه في الأساس
2. بالنسبة للخوارزميات المعقدة ، تم تصميم الخوارزمية الأساسية كطريقة قالب ، ويتم تنفيذ الوظائف التفصيلية بواسطة كل فئة فرعية.
3. إعادة تمثيل الرمز
تمديد نمط طريقة القالب
تلخيص:
تنشئ فئة الوالدين إطار عمل. بعد أن تعيد فئة الطفل إعادة كتابة بعض طرق الفئة الأصل ، فإنها تستدعي الطريقة الموروثة من فئة الأصل لإحداث نتائج مختلفة.