۱. چیست الگوی روش الگوی قالب

در توسعه نرم افزار، الگوی روش الگوی قالب یک الگوی طراحی رفتاری است که ساختار اصلی یک الگوریتم را تعریف می‌کند و برخی از مراحل را برای اجرا در زیر کلاس‌ها به تعویق می‌اندازد. این امکان را فراهم می‌کند که زیرکلاس‌ها بتوانند رفتار خود را در مراحل خاصی پیاده سازی کنند بدون تغییر ساختار الگوریتم.

۲. ویژگی‌ها و مزایای الگوی روش الگوی قالب

ویژگی‌ها و مزایای الگوی روش الگوی قالب شامل موارد زیر است:

  • تعریف ساختار اصلی یک الگوریتم و به تعویق انداختن پیاده سازی مراحل خاص در زیرکلاس‌ها.
  • امکان بازتعریف مراحل خاصی از الگوریتم توسط زیرکلاس‌ها بدون تغییر ساختار آن.
  • فراهم کردن روشی برای کپسوله‌سازی الگوریتم و انگیزه آن به جزئیات پیاده سازی خاص.
  • کاهش تکرار کد و افزایش قابلیت استفاده مجدد کد.

۳. نمونه‌های کاربردی از الگوی روش الگوی قالب

الگوی روش الگوی قالب در توسعه نرم افزار دارای کاربردهای عملی بسیاری است. برخی از نمونه‌های معمول شامل:

  • روش‌های هوک در چارچوب‌ها: روش‌های هوک نقاط گسترش در مراحل خاص یک الگوریتم را فراهم می‌کنند که به زیرکلاس‌ها امکان گسترش تا زمانی که لازم است را می‌دهند.
  • روش‌های الگوی برای عملیات پایگاه داده: به عنوان مثال، در عملیات پایگاه داده، اتصال برقرار کردن، باز کردن تراکنش‌ها، اجرای دستورات SQL، بستن اتصال‌ها، و غیره، می‌تواند به عنوان روش‌های قالب برای پیاده سازی در زیرکلاس‌ها انتزاع شود.
  • بررسی رویداد در برنامه‌های رابط گرافیکی کاربر: بررسی رویداد در برنامه‌های رابط گرافیکی کاربر اغلب مطابق با قوانین و فرآیندهای خاصی انجام می‌شود که می‌توان از الگوی روش الگوی قالب برای پیاده سازی آن استفاده کرد.

۴. پیاده سازی الگوی روش الگوی قالب در گولانگ

۴.۱. نمودار کلاس UML

الگوی روش الگوی قالب در گولانگ

۴.۲. معرفی مثال

در مثال الگوی روش الگوی قالب، یک کلاس انتزاعی به نام کلاس انتزاعی وجود دارد که شامل یک روش قالب و چندین روش انتزاعی است. زیرکلاس‌های ConcreteClass1 و ConcreteClass2 از کلاس انتزاعی به ارث می‌برند و روش‌های انتزاعی خاص را پیاده سازی می‌کنند.

۴.۳. مرحله اجرای پیاده‌سازی ۱: تعریف کلاس قالب انتزاعی

ابتدا باید یک کلاس قالب انتزاعی به نام AbstractClass تعریف کنیم که در آن روش قالب و روش‌های انتزاعی اعلام شده‌اند.

بسته اصلی

وارد "fmt"

نوع AbstractClass رابط {
	TemplateMethod()
	AbstractMethod1()
	AbstractMethod2()
	ConcreteMethod()
}

نوع BaseClass ساختار {}

کارکرده (b *BaseClass) TemplateMethod() {
	b.AbstractMethod1()
	b.AbstractMethod2()
	b.ConcreteMethod()
}

کارکرده (b *BaseClass) ConcreteMethod() {
	چاپ ("اجرای متد محسوب می‌شود")
}

۴.۴. مرحله اجرای پیاده‌سازی ۲: پیاده‌سازی کلاس‌های قالب خاص

بعدا باید کلاس‌های قالب خاص مانند ConcreteClass1 و ConcreteClass2 را ایجاد کرده و روش‌های انتزاعی را در این کلاس‌ها پیاده سازی کنیم.

نوع ConcreteClass1 ساختار {
	*BaseClass
}

کارکرده NewConcreteClass1() *ConcreteClass1 {
	برگرداندن & ConcreteClass1 {
		& BaseClass{},
	}
}

کارکرده (c *ConcreteClass1) AbstractMethod1() {
	چاپ ("اجرای متد 1 کلاس ConcreteClass1")
}

کارکرده (c *ConcreteClass1) AbstractMethod2() {
	چاپ ("اجرای متد 2 کلاس ConcreteClass1")
}

نوع ConcreteClass2 ساختار {
	*BaseClass
}

کارکرده NewConcreteClass2() *ConcreteClass2 {
	برگرداندن & ConcreteClass2 {
		& BaseClass{},
	}
}

کارکرده (c *ConcreteClass2) AbstractMethod1() {
	چاپ ("اجرای متد 1 کلاس ConcreteClass2")
}

کارکرده (c *ConcreteClass2) AbstractMethod2() {
	چاپ ("اجرای متد 2 کلاس ConcreteClass2")
}

۴.۵. مرحله اجرای پیاده‌سازی ۳: تعریف روش‌های انتزاعی و محسوب‌شده

در کلاس قالب انتزاعی، باید تعدادی روش‌های انتزاعی و روش‌های محسوب‌شده تعریف شود. روش‌های انتزاعی توسط زیرکلاس‌های خاص پیاده سازی شده‌اند و روش‌های محساب شده در روش قالب فراخوانی می‌شوند.

۴.۶. مرحله اجرای پیاده‌سازی ۴: مشتری استفاده از روش قالب

در نهایت، می‌توانیم از روش قالب در کد مشتری برای پیاده سازی منطق کسب و کار خاص استفاده کنیم.

کارکرده اصلی() {
	class1 := NewConcreteClass1()
	class1.TemplateMethod()

	class2 := NewConcreteClass2()
	class2.TemplateMethod()
}

4.7. اجرا مرحله 5: نتایج اجرا

وقتی کد بالا را اجرا می‌کنیم، خروجی زیر را دریافت خواهیم کرد:

اجرای method1 از ConcreteClass1
اجرای method2 از ConcreteClass1
اجرای متد concrete
اجرای method1 از ConcreteClass2
اجرای method2 از ConcreteClass2
اجرای متد concrete

مطالب فوق پیاده‌سازی و مثال استفاده از الگوی روش الگوی در Golang است. با استفاده از الگوی روش الگوی، می‌توانیم برخی از رفتارهای مشترک را در یک کلاس انتزاعی بسته‌بندی کرده و زیرکلاس‌های خاص را قادر به پیاده‌سازی رفتارهای خاص خود کنیم تا قابلیت استفاده مجدد و گسترش کد را بهبود بخشیم.

نتیجه

این آموزش الگوی روش الگوی در Golang را معرفی کرد، شامل تعریف، ویژگی‌ها و سناریوهای کاربرد الگو، و یک مثال پیاده‌سازی ارائه داد. از طریق این مثال، می‌توانیم به وضوح پیاده‌سازی و استفاده خاص الگوی روش الگوی را در Golang درک کنیم.