23 أنماط التصميم ، الفصل 12: وضع طريقة قالب Java
التعريف: يحدد إطار الخوارزمية في عملية ما ، ويؤخر بعض الخطوات إلى الفئة الفرعية ، بحيث يمكن للفئة الفرعية إعادة تعريف خطوات معينة محددة في الخوارزمية دون تغيير بنية الخوارزمية.
النوع: نمط سلوكي
مخطط الفصل:
في الواقع ، فإن طريقة القالب هي نمط مستخدم بشكل متكرر في البرمجة. دعونا نلقي نظرة أولاً على مثال. في يوم من الأيام ، حصل المبرمج 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
إنه يعمل بشكل طبيعي. حسنًا ، تم الانتهاء من المهمة. هذا صحيح ، هذا هو نمط طريقة القالب. يجب أن يكون لدى معظم الخريجين الذين دخلوا في مكان العمل تجارب مماثلة لـ B. يتم كتابة مهمة معقدة من قبل الأشخاص العظماء في الشركة ، ثم يكتبون الأساليب الأكثر بساطة إلى تجريد وتسليمهم إلى زملاء آخرين لتطويرهم. غالبًا ما يستخدم قسم العمل هذا في الشركات التي لديها مستويات واضحة نسبيًا من المبرمجين. على سبيل المثال ، إذا كان لدى فريق المشروع المهندسين المعماريين وكبار المهندسين والمهندسين الصغار ، فإن المهندسين المعماريين يستخدمون عمومًا عددًا كبيرًا من الواجهات والفصول المجردة لتوصيل منطق النظام بأكمله ، ويتم تسليم ترميز التنفيذ إلى كبار المهندسين والمهندسين المبتدئين وفقًا للصعوبة. ماذا عن ذلك ، هل استخدمت وضع طريقة القالب؟
هيكل نمط طريقة القالب
يتكون نمط طريقة القالب من فئة مجردة وفئات تنفيذ (أو مجموعة) من خلال هياكل الميراث. تنقسم الطرق في الفصول التجريدية إلى ثلاثة أنواع:
الطريقة التجريدية: تعلن فئة الأصل فقط ولكنها لا تنفذها ، ولكنها تحدد المواصفات ، ثم تنفذها من قبل فئة الفرعية.
طريقة القالب: تم الإعلان عنها وتنفيذها بواسطة فئات مجردة. بشكل عام ، تُحدد طرق القالب طرقًا مجردة لإكمال الوظائف المنطقية الرئيسية ، ويتم تعريف طرق القالب في الغالب على أنها الأنواع النهائية ، مما يشير إلى أنه لا يمكن إعادة كتابة الوظائف المنطقية الرئيسية في الفئات الفرعية.
طريقة الخطاف: تم الإعلان عنها وتنفيذها بواسطة الفصول التجريدية. ومع ذلك ، يمكن تمديد الفئات الفرعية ، ويمكن أن تؤثر الفئات الفرعية على منطق طرق القالب عن طريق تمديد طرق الخطاف.
تتمثل مهمة الفصول المجردة في بناء إطار منطقي ، والذي عادة ما يكتبه أفراد ذوي خبرة ، لأن جودة الفصول التجريدية تحدد مباشرة ما إذا كان البرنامج مستقرًا.
يتم استخدام فئات التنفيذ لتنفيذ التفاصيل. تكمل طريقة القالب في الفئات التجريدية منطق العمل من خلال تنفيذ أساليب تمديد الفصل. طالما أن طريقة التمديد في فئة التنفيذ تجتاز اختبار الوحدة ، فلن يكون للوظيفة الإجمالية عمومًا أخطاء كبيرة في ظل فرضية أن طريقة القالب صحيحة.
المزايا والسيناريوهات المعمول بها لطريقة القالب
من السهل التوسع. بشكل عام ، فإن طريقة القالب في فئة مجردة هي جزء ليس من السهل تغييره بشكل عكسي ، في حين أن الطريقة المجردة هي جزء يسهل تغييره بشكل عكسي. لذلك ، من خلال إضافة فئة التنفيذ ، من السهل عمومًا توسيع الوظيفة ، التي تتوافق مع مبدأ الفتح والإغلاق.
من السهل الحفاظ عليها. بالنسبة لوضع طريقة القالب ، فهذا على وجه التحديد لأن منطقها الرئيسي هو نفسه الذي يتم استخدام طريقة القالب. إذا لم يتم استخدام طريقة القالب ، فمن غير المريح للغاية الحفاظ على نفس الرمز في الفوضى.
أكثر مرونة. نظرًا لوجود طرق ربط ، يمكن أن يؤثر تنفيذ الفئات الفرعية أيضًا على تشغيل المنطق الرئيسي في الفئة الأصل. ومع ذلك ، على الرغم من كونها مرونة ، لأن الفئات الفرعية تؤثر على فئة الأصل ، فإن انتهاك مبدأ استبدال Richter سيؤدي أيضًا إلى مخاطر البرنامج. هذا يضع متطلبات أعلى على تصميم الفصول التجريدية.
عندما يكون للفئات الفرعية المتعددة نفس الطريقة والطرق تكون متشابهة بشكل منطقي ، يمكنك التفكير في استخدام نمط طريقة القالب. هذا الوضع مناسب أيضًا لاستخدام البرنامج عندما يكون الإطار الرئيسي للبرنامج هو نفسه والتفاصيل مختلفة.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.