ما هو نمط تصميم أسلوب القالب؟

ما هو نمط تصميم أسلوب القالب؟
القراء مثلك يساعدون في دعم MUO. عند إجراء عملية شراء باستخدام الروابط الموجودة على موقعنا ، فقد نربح عمولة تابعة.

يتيح لك نمط تصميم طريقة القالب تحديد خطوات الخوارزمية ضمن طريقة واحدة للفصل. يسمح لك هذا بتقييد عمليات معينة لتطبيق ما بطريقة واحدة.





كل خطوة من خطوات الخوارزمية التي تحددها طريقة القالب هي طريقة داخلية. ومع ذلك ، فإن طريقة القالب تتعامل فقط مع تنفيذ بعض أساليبها الداخلية. عادةً ما تقوم الفئات الفرعية بتنفيذ واحد أو أكثر من الطرق الداخلية لطريقة القالب.





اجعل فيديو اليوم

يمكن للفئة الفرعية تنفيذ طريقة مجردة ، لكنها لا تستطيع إعادة تعريف الخوارزمية التي يتم تنفيذها بطريقة نهائية.





كيف يعمل أسلوب القالب

سيكون لنمط أسلوب القالب النموذجي الهيكل التالي:

final void templateMethod() { 
abstractOperation1();
abstractOperation2();

concreteOperation1();
concreteOperation2();

hook();
}

أول شيء مهم يجب ملاحظته هو أن templateMethod () نهائي ، لذلك لا يمكن لأي فئة فرعية تجاوز هذه الطريقة. الشيء المهم الآخر الذي يجب ملاحظته هو الأنواع الثلاثة من الطرق التي يستخدمها نمط طريقة القالب: ملموسة ، مجردة ، وخطافية.



كيفية إنشاء صورة ISO لنظام التشغيل windows 7

تطبق فئة الملخصات التي تضم طريقة القالب جميع طرقها الملموسة ، بينما تطبق الفئات الفرعية الملموسة طرقها المجردة. لا تقوم طريقة الخطاف عادةً بأي شيء افتراضيًا ، لكن الفئة الفرعية لديها القدرة على تجاوز هذه الطرق عند الضرورة.

كيفية تعيين حساب جوجل الأساسي

تنفيذ نموذج أسلوب القالب في جافا

يعمل نمط أسلوب القالب كإطار عمل للتطبيق. لذلك ، سترى هذا النمط غالبًا في أطر عمل البرامج التي توفر مخططًا لتطوير التطبيقات.





على سبيل المثال ، يمكنك توصيل تطبيقك بأحد أنظمة قواعد البيانات العديدة. تتبع خطوات الاتصال بقاعدة البيانات واستخدامها نموذجًا مشابهًا:

public abstract class Database { 
// template method
final void databaseTemplate() {
// abstract methods
setDBDriver();
setCredentials();

// concrete method
connect();

// abstract methods
createDB();
setData();
readData();

// hook methods
if (userWantsToUpdate()) {
updateData();
}

if (userWantsToDelete()) {
deleteData();
}

// concrete method
closeConnection();
}

abstract void setDBDriver();
abstract void setCredentials();
abstract void createDB();
abstract void setData();
abstract void readData();
abstract void updateData();
abstract void deleteData();

void connect() {
System.out.println("Connecting to database...");
}

void closeConnection() {
System.out.println("Destroying database connection...");
}

boolean userWantsToUpdate() {
return false;
}

boolean userWantsToDelete() {
return false;
}
}

تستخدم فئة قاعدة البيانات المثال هذه نمط أسلوب القالب لإنشاء قالب يمكنك استخدامه مع أي قاعدة بيانات. لاستخدام قاعدة بيانات ، سيحتاج التطبيق الخاص بك إلى الاتصال بها ، ثم إتلاف الاتصال بعد الاستخدام. عادة ما تكون هذه الأنشطة هي نفسها لجميع قواعد البيانات. لذلك ، يمكن لفئة قاعدة البيانات المجردة تنفيذ الاتصال() و اغلق الاتصال() طُرق.





تختلف الطرق الأخرى في طريقة القالب بناءً على نوع قاعدة البيانات. على سبيل المثال ، تقوم قاعدة بيانات MySQL بتخزين البيانات في جداول ، في حين أن ملف تقوم قاعدة بيانات MongoDB بتخزين البيانات في مجموعات . إذا كنت تريد استخدام ملف قاعدة بيانات MySQL بجافا ، ببساطة قم بإنشاء فئة MySQL جديدة تعمل على توسيع فئة قاعدة البيانات:

public class MySQL extends Database { 
@Override
void setDBDriver() {
System.out.println("Selecting MySQL driver...");
}

@Override
void setCredentials() {
System.out.println("Setting MySQL database Credential...");
}

@Override
void createDB() {
System.out.println("Creating a new table...");
}

@Override
void setData() {
System.out.println("Inserting data into database...");
}

@Override
void readData() {
System.out.println("Retrieving data from database...");
}

@Override
void updateData() {
System.out.println("Updating data in database...");
}

@Override
void deleteData() {
System.out.println("Deleting data from database...");
}
}

تطبق فئة MySQL جميع الأساليب المجردة لفئة قاعدة البيانات. يمكنه أيضًا تجاوز بعض الطرق الملموسة. ومع ذلك ، لا يمكن أن تلمس databaseTemplate () الطريقة التي تستخدم الكلمة الأخيرة.

public class Main { 
public static void main(String[] args) {
Database mySQLDB = new MySQL();
mySQLDB.databaseTemplate();
}
}

تنشئ هذه الفئة الرئيسية كائن قاعدة بيانات MySQL جديدًا وتستخدم طريقة القالب لمحاكاة كيفية اتصال التطبيق بقاعدة البيانات. يؤدي تشغيل الطريقة الرئيسية إلى طباعة الإخراج التالي إلى وحدة التحكم:

  طريقة قالب قاعدة بيانات MySQL

في الإخراج ، ستلاحظ أن التطبيق لا يستدعي مطلقًا تحديث البيانات() و حذف البيانات() طُرق. هذا هو سبب أهمية طرق الخطاف. في قاعدة بيانات SQL ، ستحتاج إلى إنشاء جداول جديدة وإدراج البيانات وعرض بياناتك. ومع ذلك ، قد لا ترغب في تحديث البيانات أو حذفها. لذلك ، تمنح طرق الخطاف الفئات الفرعية خيار التحكم في هذه الجوانب الحرجة للخوارزمية.

@Override 
boolean userWantsToUpdate() {
return true;
}

بمجرد إضافة الرمز أعلاه إلى فئة MySQL ، يقوم التطبيق الآن بتحديث البيانات الموجودة في قاعدة البيانات. إذا قمت بتشغيل الفصل الرئيسي مرة أخرى ، فسيتم عرض الإخراج المحدث التالي:

هل يمكنك الحصول على الإنترنت على roku
  تحديث طريقة قالب قاعدة بيانات MySQL

كما ترى ، يقوم التطبيق الآن بتحديث البيانات في قاعدة البيانات.

فوائد استخدام نمط تصميم أسلوب القالب

تتمثل إحدى الفوائد الرئيسية لنمط أسلوب القالب في أنه يعزز إمكانية إعادة استخدام البرامج. يدعم نمط التصميم هذا أيضًا البرمجة الفعالة. تحتاج الفئة الفرعية فقط إلى تنفيذ الأساليب الفريدة لعملياتها.

بالإضافة إلى ذلك ، يكون التطبيق الذي يستخدم نمط أسلوب القالب أكثر أمانًا ، حيث لا يمكن للفئات الخارجية تغيير هيكل التشغيل الخاص به.