دیزاین پترن Template Method از دسته رفتاری در مجموعه ۲۳ پترن مشهور Gang of Four است. اسکلت ثابت یک فرایند را در کلاس پایه تعریف میکند و گامهای متغیر را به زیرکلاسها میسپارد.
سناریوی واقعی در فروشگاه
وارد کردن محصول از CSV و XML مراحل یکسانی مانند اعتبارسنجی و ذخیره دارد اما شیوه Parse متفاوت است.
نمونه در PHP
abstract class Importer {
final public function run(string $file): void {
foreach ($this->parse($file) as $row) { $this->save($row); }
}
abstract protected function parse(string $file): array;
abstract protected function save(array $row): void;
}
نمونه در پایتون
class Importer:
def run(self, path):
for row in self.parse(path): self.save(row)
def parse(self, path): raise NotImplementedError
چه زمانی مناسب نیست؟
Template Method با ارثبری کار میکند و برای تنوعهای زیاد گاهی Composition و Strategy انعطاف بیشتری دارند.
برای شناخت جایگاه این پترن در سه دسته اصلی، دیزاین پترن را ببینید. مقاله دیزاین پترن باورژن و دوره آموزشی باورژن نیز منابع مرتبطاند.