السلام عليكم
كنت أشاهد فيلماً لممثل عربي مشهور
تعلمون أني أحب كل ما هو عربي
على العموم بعد أن انتهى الفيلم
تمنيت لو أني فعلت أي شيء آخر غير مشاهدته
الفيلم فكاهي يحتوي على قفشات لذيذة
حوار جيد وممثلين مقبولين
ما المشكلة إذن؟
المشكلة تكمن في شخصية بطل الفيلم
الذي كان يمثل شخصية أحد رؤوس المال في مصر
لكنه يعاني من عقدة الجهل
بالطبع كان لا يتكلم الإنجليزية
المهم بعد أن أصبح مثقفاً وتخرج من الجامعة
أصبح يتكلم الإنجليزية
الفكرة وصلت بشكل جيد
لماذا لا أشاهد الأفلام الإنجليزية
على الأقل سأضمن أن أصبح مثقفاً
يبدو أني شطحت عن الموضوع بشكل كبير
لكن هناك أشياء تسقم السليم
وتقتل المريض
ولا أستطيع أن أرى أمثال هؤلاء
يشوهون لغتنا الجميلة
وأظل ساكتاً
لمجرد أننا نتكلم عن الفن السابع
أعود إلى موضوعي
من فترة ليست بالبسيطة سألني أحد الأخوة
عن نمط القوالب template method
اعتذر له عن التأخير الحاصل
وها نحن ذا مع نمط القوالب
فوائد النمط
1- وضع خطة سير لمن يأتي بعدك
2- تقسيم الشيفرة الخاص بك إلى جزئيات لكي يسهل عليك التفكير
3- يبسط الشيفرة إلى أبعد الحدود
4- مفيد جداً للمطورين
كيفية بناء النمط
1- في البداية يكون لدينا خوارزمية كبيرة نوعاً ما
نأخذ مثال على خوارزمية إنشاء صفحة أوتوماتيكياً
2- نقوم بتقسيم الخوارزمية إلى عدة أقسام
في البداية سنحتاج إلى بيانات عن الصفحة(اسم الصفحة محتويات الصفحة…إلخ)
هذه العملية سنسميها intalize
ثم سنعرض للمستخدم عدة قوالب ليختار القالب الذي يناسب صفحته
هذه العملية سنسميها theming
بعد أن يختار المستخدم القالب
سنقوم بعرض الهيكلية العامة للصفحة
ونسمح له بتحديد أماكن العناصر في الصفحة
وهذه العملية سنسميها layout
بهذا نكون صممنا موقع بسيط
3- الآن عندما يريد المستخدم بناء صفحة جديدة
سينفذ العمليات التالية بالترتيب
intalize
theming
layout
4- بعد ذلك سنقوم بإنشاء دالة اسمها createWebSite وستكون كالتالي
<pre>
public void createWebSite (){
intalize();
theming();
layout();
}
</pre>
فيصبح المستخدم عندما يريد إنشاء موقع جديد
ينفذ createWebSite فقط
نلاحظ أننا قمنا بتقسيم الخوارزمية الكبيرة إلى خوارزميات أصغر
وأن شيفرتنا أصبحت جميلة و بسيطة
كيف تستفيد من نمط القوالب كمطور
1- لن تحتاج إلى بناء الخوارزمية من البداية
لكنك ستعدل على الأجزاء التي تريد
2- من يريد التطوير على برنامجك
لن يحتاج إلى قراءة الشيفرة كاملة
في مثالنا السابق ستقوم بنداء الدالة createWebSite
أو التعديل على أي دالة أخرى
3-بسهولة يمكنك حماية الشيفرة الخاصة بك
سنشرح على مثالنا السابق
سنقوم بجعل الدوال التالية خاصة private
intalize
theming
layout
وتبقى الدالة createWebSite كما هي
بهذا تضمن عدم التعديل على الشيفرة الخاصة بك بدون إذنك
بمعنى آخر لن يستطيع أحد أن يقوم بعمل override للدوال المهمين
مع مقدرته على استخدام الحزمة في برنامجه لكن لا يستيطع التعديل عليه
وهذا يضمن لك حقك كمطور
على العموم لو دققنا أكثر لوجدنا فوائد أكثر
بما أني قد أنهيت الموضوع
فلا بأس من بعض الدردشة
خصوصاً وأني أحب الدردشة
نسيت أن أخبركم أني فد وجدت
الشخص الذي كان يتكلم عن التهام حنجرتي
ماذا لما أقل لكم عن ذلك؟
صحيح أن ذاكرتي شبيهة بالقرش المخروم
لكني أذكر ذلك جيداً
أظن أني أخبرتكم عن ذلك في موضوع النمط الثالث:نمط الاستراتيجية
المهم أنكم لن تتوقعوا من الفاعل
بالضبط يا لولو
هو بالذات
الأخ عبده شخصيتي المحبوبة
هو الذي كان يداعبني
بصراحة كنت أريد أن أبلغ الشرطة عن ذلك
فالدعابة لها حدود
لكني رجحت أنهم سيعتبروني مجنوناً
لأن الأخ عبده من صناعتي
لذلك آثرت الإنسحاب بهدوء
يكفي كلاماً لليوم فلست أحب الدردشة
ربما لأني ملول قليلاً
(أتمنى أن يكون أحدهم لاحظ أني كنت أحب الدردشة قبل قليل راجع أول كلامي بعد انتهاء الموضوع)
تحياتي
Tags: design pattern, template, عالم الأنماط, نمط القوالب