1. ما هو نمط القالب Template Method
في تطوير البرمجيات، يعد نمط القالب Template Method واحدًا من أنماط تصميم السلوك الذي يحدد هيكل خوارزمية ويؤجل تنفيذ بعض الخطوات ليتم تنفيذها في الفصول الفرعية. وهذا يسمح للفصول الفرعية بتنفيذ سلوكها الخاص في الخطوات المحددة دون تغيير هيكل الخوارزمية.
2. ميزات ومزايا نمط القالب Template Method
تشمل ميزات ومزايا نمط القالب Template Method ما يلي:
- يحدد هيكل خوارزمية ويؤجل تنفيذ الخطوات المحددة للفصول الفرعية.
- يسمح للفصول الفرعية بإعادة تعريف بعض الخطوات في الخوارزمية دون تغيير هيكلها.
- يوفر طريقة لتجزئة الخوارزمية، مما يجعلها مستقلة عن تفاصيل التنفيذ المحددة.
- يقلل من تكرار الكود ويعزز إعادة استخدام الكود.
3. أمثلة عملية لتطبيق نمط القالب Template Method
يتضمن نمط القالب Template Method العديد من التطبيقات العملية في تطوير البرمجيات. تشمل بعض الأمثلة النمطية ما يلي:
- استخدام أساليب Hook في الأطر: توفر أساليب Hook نقاط تمديد في بعض الخطوات من خوارزمية، مما يسمح للفصول الفرعية بالتمديد حسب الحاجة.
- أساليب القوالب لعمليات قاعدة البيانات: على سبيل المثال، في عمليات قاعدة البيانات، يمكن تجريد الاتصال وفتح المعاملات وتنفيذ عبارات SQL وإغلاق الاتصالات، وما إلى ذلك، على أن تكون أساليب القالب ليتم تنفيذها من قبل الفصول الفرعية.
- التعامل مع الأحداث في تطبيقات واجهة المستخدم الرسومية (GUI): يتبع التعامل مع الأحداث في تطبيقات واجهة المستخدم الرسومية قواعد وعمليات معينة يمكن تنفيذها باستخدام نمط القالب Template Method.
4. تنفيذ نمط القالب Template Method في Golang
4.1. مخطط الفصص UML
4.2. مقدمة المثال
في مثال نمط القالب Template Method، يوجد فصل مجرد AbstractClass، الذي يتضمن طريقة قالب TemplateMethod وبعض الأساليب المجردة AbstractMethod1 وAbstractMethod2. ترث فصول الملمة ConcreteClass1 وConcreteClass2 من AbstractClass وتنفذ الأساليب المجردة المحددة.
4.3. الخطوة 1 للتنفيذ: تحديد فئة القالب المجردة
أولاً، نحتاج إلى تحديد فئة القالب المجردة AbstractClass، حيث تتم إعلان طريقة القالب والأساليب المجردة.
package main
import "fmt"
type AbstractClass interface {
TemplateMethod()
AbstractMethod1()
AbstractMethod2()
ConcreteMethod()
}
type BaseClass struct{}
func (b *BaseClass) TemplateMethod() {
b.AbstractMethod1()
b.AbstractMethod2()
b.ConcreteMethod()
}
func (b *BaseClass) ConcreteMethod() {
fmt.Println("تنفيذ الطريقة الملمة")
}
4.4. الخطوة 2 للتنفيذ: تنفيذ فئات القالب المحددة
بعد ذلك، نحتاج إلى إنشاء فئات قالب محددة، مثل ConcreteClass1 وConcreteClass2، وتنفيذ الأساليب المجردة في هذه الفئات.
type ConcreteClass1 struct {
*BaseClass
}
func NewConcreteClass1() *ConcreteClass1 {
return &ConcreteClass1{
&BaseClass{},
}
}
func (c *ConcreteClass1) AbstractMethod1() {
fmt.Println("تنفيذ الطريقة 1 للفصل الملمة 1")
}
func (c *ConcreteClass1) AbstractMethod2() {
fmt.Println("تنفيذ الطريقة 2 للفصل الملمة 1")
}
type ConcreteClass2 struct {
*BaseClass
}
func NewConcreteClass2() *ConcreteClass2 {
return &ConcreteClass2{
&BaseClass{},
}
}
func (c *ConcreteClass2) AbstractMethod1() {
fmt.Println("تنفيذ الطريقة 1 للفصل الملمة 2")
}
func (c *ConcreteClass2) AbstractMethod2() {
fmt.Println("تنفيذ الطريقة 2 للفصل الملمة 2")
}
4.5. الخطوة 3 للتنفيذ: تحديد الأساليب المجردة والملمة
في فئة القالب المجردة، نحتاج إلى تحديد بعض الأساليب المجردة والأساليب الملمة. تُنفذ الأساليب المجردة من قبل فصول محددة، وتُدعى الأساليب الملمة في طريقة القالب.
4.6. الخطوة 4 للتنفيذ: عميل استخدام الطريقة الملمة
وأخيرًا، يمكننا استخدام الطريقة الملمة في كود العميل لتنفيذ منطق الأعمال المحدد.
func main() {
class1 := NewConcreteClass1()
class1.TemplateMethod()
class2 := NewConcreteClass2()
class2.TemplateMethod()
}
4.7. تنفيذ الخطوة 5: نتائج التنفيذ
عند تشغيل الكود أعلاه، سنحصل على النتائج التالية:
تنفيذ الطريقة 1 من ConcreteClass1
تنفيذ الطريقة 2 من ConcreteClass1
تنفيج الطريقة الخرسانية
تنفيذ الطريقة 1 من ConcreteClass2
تنفيذ الطريقة 2 من ConcreteClass2
تنفيذ الطريقة الخرسانية
ما تم ذكره أعلاه هو مثال على تنفيذ واستخدام نمط الطراز القالبي في الجولانج. من خلال استخدام نمط الطراز القالبي، يمكننا تجميع بعض السلوكيات الشائعة في صنف مجرد والسماح للفصول الفرعية المحددة بتنفيذ سلوكياتها المحددة، مما يعزز إعادة استخدام الكود وقابلية التوسيع.
الاستنتاج
قدم هذا البرنامج التعليمي نمط الطراز القالبي في الجولانج، بما في ذلك التعريف والخصائص وسيناريوهات التطبيق للنمط، وقدم مثالا على التنفيذ. من خلال هذا المثال، يمكننا فهم تنفيذ واستخدام نمط الطراز القالبي بشكل واضح في الجولانج.