القراء مثلك يساعدون في دعم MUO. عند إجراء عملية شراء باستخدام الروابط الموجودة على موقعنا ، فقد نربح عمولة تابعة.
يتيح لك نمط تصميم طريقة القالب تحديد خطوات الخوارزمية ضمن طريقة واحدة للفصل. يسمح لك هذا بتقييد عمليات معينة لتطبيق ما بطريقة واحدة.
كل خطوة من خطوات الخوارزمية التي تحددها طريقة القالب هي طريقة داخلية. ومع ذلك ، فإن طريقة القالب تتعامل فقط مع تنفيذ بعض أساليبها الداخلية. عادةً ما تقوم الفئات الفرعية بتنفيذ واحد أو أكثر من الطرق الداخلية لطريقة القالب.
يمكن للفئة الفرعية تنفيذ طريقة مجردة ، لكنها لا تستطيع إعادة تعريف الخوارزمية التي يتم تنفيذها بطريقة نهائية.
كيف يعمل أسلوب القالب
سيكون لنمط أسلوب القالب النموذجي الهيكل التالي:
أخيرفارغtemplateMethod(){
abstractOperation1 () ،
abstractOperation2 () ،عملية ملموسة 1 () ؛
عملية ملموسة 2 () ،
خطاف()؛
}
أول شيء مهم يجب ملاحظته هو أن templateMethod () نهائي ، لذلك لا يمكن لأي فئة فرعية تجاوز هذه الطريقة. الشيء المهم الآخر الذي يجب ملاحظته هو الأنواع الثلاثة من الطرق التي يستخدمها نمط طريقة القالب: ملموسة ، مجردة ، وخطافية.
تطبق فئة الملخصات التي تضم طريقة القالب جميع طرقها الملموسة ، بينما تطبق الفئات الفرعية الملموسة طرقها المجردة. لا تقوم طريقة الخطاف عادةً بأي شيء افتراضيًا ، لكن الفئة الفرعية لديها القدرة على تجاوز هذه الطرق عند الضرورة.
تنفيذ نموذج أسلوب القالب في جافا
يعمل نمط أسلوب القالب كإطار عمل للتطبيق. لذلك ، سترى هذا النمط غالبًا في أطر عمل البرامج التي توفر مخططًا لتطوير التطبيقات.
على سبيل المثال ، يمكنك توصيل تطبيقك بأحد أنظمة قواعد البيانات العديدة. تتبع خطوات الاتصال بقاعدة البيانات واستخدامها نموذجًا مشابهًا:
عامخلاصةفصلقاعدة البيانات{
// طريقة القالب
أخيرفارغقاعدة البيانات(){
// طرق مجردة
setDBDriver () ،
setCredentials () ،// طريقة ملموسة
يتصل()؛// طرق مجردة
createDB () ،
setData () ؛
إقرأ البيانات()؛// طرق الخطاف
إذا (userWantsToUpdate ()) {
تحديث البيانات()؛
}إذا (userWantsToDelete ()) {
حذف البيانات()؛
}// طريقة ملموسة
اغلق الاتصال()؛
}خلاصةفارغsetDBDriver();
خلاصةفارغsetCredentials();
خلاصةفارغإنشاء DB();
خلاصةفارغsetData();
خلاصةفارغإقرأ البيانات();
خلاصةفارغتحديث البيانات();
خلاصةفارغحذف البيانات();فارغيتصل(){
System.out.println ("جاري الاتصال بقاعدة البيانات ...");
}فارغاغلق الاتصال(){
System.out.println ("جاري تدمير اتصال قاعدة البيانات ...");
}قيمة منطقيةيريد المستخدم التحديث(){
يعودخطأ شنيع;
}
قيمة منطقيةيريد المستخدم حذف(){
يعودخطأ شنيع;
}
}
تستخدم فئة قاعدة البيانات المثال هذه نمط أسلوب القالب لإنشاء قالب يمكنك استخدامه مع أي قاعدة بيانات. لاستخدام قاعدة بيانات ، سيحتاج التطبيق الخاص بك إلى الاتصال بها ، ثم إتلاف الاتصال بعد الاستخدام. عادة ما تكون هذه الأنشطة هي نفسها لجميع قواعد البيانات. لذلك ، يمكن لفئة قاعدة البيانات المجردة تنفيذ يتصل() و اغلق الاتصال() طُرق.
تختلف الطرق الأخرى في طريقة القالب بناءً على نوع قاعدة البيانات. على سبيل المثال ، تقوم قاعدة بيانات MySQL بتخزين البيانات في جداول ، في حين أن ملف تقوم قاعدة بيانات MongoDB بتخزين البيانات في مجموعات. إذا كنت تريد استخدام ملف قاعدة بيانات MySQL بجافا، ببساطة قم بإنشاء فئة MySQL جديدة تعمل على توسيع فئة قاعدة البيانات:
عامفصلMySQLيمتدقاعدة البيانات{
@تجاوز
فارغsetDBDriver(){
System.out.println ("تحديد برنامج تشغيل MySQL ...");
}@تجاوز
فارغsetCredentials(){
System.out.println ("جارٍ تعيين بيانات اعتماد قاعدة بيانات MySQL ...");
}@تجاوز
فارغإنشاء DB(){
System.out.println ("إنشاء جدول جديد ...");
}@تجاوز
فارغsetData(){
System.out.println ("جاري إدراج البيانات في قاعدة البيانات ...");
}@تجاوز
فارغإقرأ البيانات(){
System.out.println ("جاري استرداد البيانات من قاعدة البيانات ...");
}@تجاوز
فارغتحديث البيانات(){
System.out.println ("جاري تحديث البيانات في قاعدة البيانات ...");
}
@تجاوز
فارغحذف البيانات(){
System.out.println ("جاري حذف البيانات من قاعدة البيانات ...");
}
}
تطبق فئة MySQL جميع الأساليب المجردة لفئة قاعدة البيانات. يمكنه أيضًا تجاوز بعض الطرق الملموسة. ومع ذلك ، لا يمكن أن تلمس databaseTemplate () الطريقة التي تستخدم الكلمة النهائية.
عامفصلرئيسي{
عامثابتةفارغرئيسي(سلسلة [] args){
قاعدة البيانات mySQLDB = جديد MySQL () ؛
mySQLDB.databaseTemplate();
}
}
تنشئ هذه الفئة الرئيسية كائن قاعدة بيانات MySQL جديدًا وتستخدم طريقة القالب لمحاكاة كيفية اتصال التطبيق بقاعدة البيانات. يؤدي تشغيل الطريقة الرئيسية إلى طباعة الإخراج التالي إلى وحدة التحكم:
في الإخراج ، ستلاحظ أن التطبيق لا يستدعي مطلقًا تحديث البيانات() و حذف البيانات() طُرق. هذا هو سبب أهمية طرق الخطاف. في قاعدة بيانات SQL ، ستحتاج إلى إنشاء جداول جديدة وإدراج البيانات وعرض بياناتك. ومع ذلك ، قد لا ترغب في تحديث البيانات أو حذفها. لذلك ، تمنح طرق الخطاف الفئات الفرعية خيار التحكم في هذه الجوانب الحرجة للخوارزمية.
@تجاوز
قيمة منطقيةيريد المستخدم التحديث(){
يعودحقيقي;
}
بمجرد إضافة الرمز أعلاه إلى فئة MySQL ، يقوم التطبيق الآن بتحديث البيانات الموجودة في قاعدة البيانات. إذا قمت بتشغيل الفصل الرئيسي مرة أخرى ، فسيتم عرض الإخراج المحدث التالي:
كما ترى ، يقوم التطبيق الآن بتحديث البيانات في قاعدة البيانات.
فوائد استخدام نمط تصميم أسلوب القالب
تتمثل إحدى الفوائد الرئيسية لنمط أسلوب القالب في أنه يعزز إمكانية إعادة استخدام البرامج. يدعم نمط التصميم هذا أيضًا البرمجة الفعالة. تحتاج الفئة الفرعية فقط إلى تنفيذ الأساليب الفريدة لعملياتها.
بالإضافة إلى ذلك ، يكون التطبيق الذي يستخدم نمط أسلوب القالب أكثر أمانًا ، حيث لا يمكن للفئات الخارجية تغيير هيكل التشغيل الخاص به.