يحدد نمط أسلوب القالب لنمط تصميم Java إطار عمل خوارزمية التشغيل ويؤجل بعض الخطوات إلى الفئات الفرعية، بحيث يمكن للفئات الفرعية إعادة تعريف بعض الخطوات المحددة في الخوارزمية دون تغيير بنية الخوارزمية. النموذج السلوكي
كما هو موضح أدناه:
في الواقع، طريقة القالب هي نمط مستخدم بشكل متكرر في البرمجة. دعونا نلقي نظرة على مثال أولاً. في أحد الأيام، حصل المبرمج "أ" على مهمة: بالنظر إلى مصفوفة من الأعداد الصحيحة، قم بفرز الأرقام الموجودة في المصفوفة من الصغير إلى الكبير، ثم اطبع النتائج التي تم فرزها. بعد التحليل، يمكن تقسيم هذه المهمة تقريبًا إلى قسمين، الفرز والطباعة. من السهل تنفيذ وظيفة الطباعة، لكن الفرز مزعج بعض الشيء. لكن "أ" لديه طريقة لإكمال وظيفة الطباعة أولاً والعثور على شخص آخر للقيام بوظيفة الفرز.
Abstract class AbstractSort { /** * فرز مصفوفة المصفوفة من الصغير إلى الكبير * @param array */ protected Abstract voidsort(int[] array); public void showSortResult(int[] array){ this.sort(array); System.out.print("نتيجة الفرز: "); for (int i = 0; i < array.length; i++){ System.out.printf("%3s", array[i] } }}
بعد الانتهاء من الكتابة، وجد "أ" زميله "ب" الذي تخرج للتو وانضم إلى الوظيفة مؤخرًا، وقال: هناك مهمة كتبت المنطق الرئيسي بالفعل. يمكنك تنفيذ بقية المنطق. لذلك أعطيت فئة AbstractSort لـ B وطلبت من B كتابة التنفيذ. تولى B الأمر وألقى نظرة عليه، وكان من الممكن تنفيذه في 10 دقائق.
class ConcreteSort Extends AbstractSort { @Override protected voidsort(int[] array){ for(int i=0; i<array.length-1; i++){ SelectSort(array, i } } public void SelectSort(int[); ] array, int Index) { int MinValue = 32767; // متغير القيمة الدنيا int IndexMin = 0; // متغير مؤشر القيمة الدنيا int Temp; Index; i < array.length; i++) { if (array[i] < MinValue){ // ابحث عن القيمة الدنيا MinValue = array[i]; الفهرس] ; // تبادل القيمتين array[index] = array[indexMin]; array[indexMin] = Temp }}
بعد كتابتها، سلمها إلى A، وسيقوم A بتشغيلها:
public class Client { public static int[] a = { 10, 32, 1, 9, 5, 7, 12, 0, 4, 3 }; // مصفوفة البيانات الافتراضية public static void main(String[] args){ AbstractSort s = new ConcreteSort(); s.showSortResult(a);
نتائج التشغيل:
نتائج الفرز: 0 1 3 4 5 7 9 10 12 32
أنه يعمل بشكل جيد. حسنا، المهمة أنجزت. نعم، هذا هو نمط أسلوب القالب. يجب أن يتمتع معظم الخريجين الذين دخلوا للتو إلى مكان العمل بتجربة مشابهة لـ B. بالنسبة لمهمة معقدة، سيكتب أفضل الأشخاص في الشركة المنطق الرئيسي، ثم يكتبون الأساليب التي تبدو بسيطة إلى أساليب مجردة، ويتركونها للزملاء الآخرين لتطويرها. غالبًا ما يُستخدم تقسيم العمل هذا في الشركات التي لديها مستويات واضحة من موظفي البرمجة. على سبيل المثال، إذا كان فريق المشروع يضم مهندسًا معماريًا ومهندسًا كبيرًا ومهندسًا مبتدئًا، فسيستخدم المهندس المعماري عمومًا عددًا كبيرًا من الواجهات والفئات المجردة لربط منطق النظام بأكمله معًا، وسيتم تسليم كود التنفيذ إلى يقوم المهندس الكبير والمهندس المبتدئ على التوالي وفقًا للصعوبة. ماذا عن ذلك، هل سبق لك استخدام نمط أسلوب القالب؟
هيكل نمط طريقة القالب:
يتكون نمط أسلوب القالب من فئة مجردة وفئة تنفيذ واحدة (أو مجموعة) من خلال بنية الميراث. تنقسم الأساليب الموجودة في الفئة المجردة إلى ثلاثة أنواع:
1. الطريقة المجردة : تم الإعلان عنها فقط في الفئة الأصلية ولكن لم يتم تنفيذها، وبدلاً من ذلك، يتم تعريف المواصفات ثم تنفيذها بواسطة الفئات الفرعية الخاصة بها.
2. طريقة القالب : تم الإعلان عنها وتنفيذها بواسطة فئة مجردة. بشكل عام، تستدعي أساليب القالب الأساليب المجردة لإكمال الوظائف المنطقية الرئيسية، ويتم تعريف معظم أساليب القوالب على أنها أنواع نهائية، مما يشير إلى أنه لا يمكن تجاوز الوظائف المنطقية الرئيسية في الفئات الفرعية.
3. طريقة الخطاف : تم الإعلان عنها وتنفيذها بواسطة فئة مجردة. ولكن يمكن توسيع الفئات الفرعية، ويمكن أن تؤثر الفئات الفرعية على منطق أساليب القالب من خلال توسيع أساليب الربط.
تتمثل مهمة الفئات المجردة في بناء إطار منطقي، وعادة ما يكتبه موظفون ذوو خبرة، لأن جودة الفئات المجردة تحدد بشكل مباشر استقرار البرنامج.
يتم استخدام فئات التنفيذ لتنفيذ التفاصيل. تكمل طريقة القالب في الفئة المجردة منطق العمل من خلال تنفيذ طريقة تمديد الفئة. طالما أن طريقة الامتداد في فئة التنفيذ اجتازت اختبار الوحدة وكانت طريقة القالب صحيحة، فلن تكون هناك أخطاء كبيرة بشكل عام في الوظيفة العامة.
المزايا والسيناريوهات القابلة للتطبيق لطريقة القالب:
من السهل التوسع. بشكل عام، طريقة القالب في فئة مجردة هي الجزء الذي ليس من السهل تغييره بأثر رجعي، في حين أن الطريقة المجردة هي الجزء الذي يسهل تغييره بأثر رجعي، لذلك، من خلال إضافة فئات التنفيذ، من السهل عمومًا توسيع الوظيفة ، وهو ما يتماشى مع مبدأ الفتح والإغلاق.
سهلة الصيانة. بالنسبة لنمط طريقة القالب، يتم استخدام طريقة القالب على وجه التحديد لأن منطقها الرئيسي هو نفسه. إذا لم يتم استخدام طريقة القالب، فسيتم السماح لنفس الكود بالتوزيع في فئات مختلفة، وهو أمر غير مريح للغاية للمحافظة عليه. .
أكثر مرونة. بسبب طريقة الخطاف، يمكن أن يؤثر تنفيذ الفئة الفرعية أيضًا على تشغيل المنطق الرئيسي في الفئة الأصلية. ومع ذلك، على الرغم من كونها مرنة، نظرًا لأن الفئة الفرعية تؤثر على الفئة الأصلية، فإنها تنتهك مبدأ استبدال ليسكوف وتجلب أيضًا مخاطر للبرنامج. وهذا يضع متطلبات أعلى على تصميم الطبقات المجردة.
عندما يكون لدى فئات فرعية متعددة نفس الطريقة ومنطق هذه الأساليب هو نفسه، يمكنك التفكير في استخدام نمط أسلوب القالب. يعد هذا الوضع أيضًا أكثر ملاءمة للمواقف التي يكون فيها الإطار الرئيسي للبرنامج هو نفسه ولكن التفاصيل مختلفة.