دیزاین پترن Template

دیزاین پترن Template

Behavioral DESIGN PATTERNS

یکی از زیرشاخه های الگوهای طراحی، Behavioral Design Patterns است. تمرکز و وظیفه اصلی این دیزاین پترن ها تعامل اشیاء و جداسازی وظایف آن ها  از یکدیگر است.

Template Design Pattern

دیزاین پترن Template یکی از زیرشاخه های الگوهای طراحی از نوع Behavioral است.

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

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

میزان استفاده : متوسط

پیاده سازی دیزاین پترن Template

فرض کنید میخواهیم خانه بسازیم. برای ساخت یک خانه ما به ترتیب مراحل زیر را اجرا میکنیم.

  1. ساخت فونداسیون
  2. ساخت دیوار ها
  3. ساخت دیوارهای درونی
  4. ساخت پنجره ها
  5. تکمیل کردن خانه

همین کارها نشان میدهد که تفاوتی نمیکند خانه ما از چوب ساخته شده باشد یا از آجر یا هر چیز دیگر. (البته در این مثال ما ساده سازی داریم. شما فرض کنید که به این شکل هست.)

بنابراین ما یک کلاس تحت عنوان HouseTemplate به شکل زیر ایجاد میکنیم.

abstract class HouseTemplate
    {
        public void BuildHouse()
        {
            BuildFoundation();
            BuildWalls();
            BuildInnerWalls();
            BuildWindows();
            BuildCompleted();
        }
        protected abstract void BuildFoundation();
        protected abstract void BuildWalls();
        protected abstract void BuildInnerWalls();
        protected abstract void BuildWindows();
        protected abstract void BuildCompleted();
    }

این کلاس abstract است و تک تک این مراحل را باید در کلاسی که از این کلاس ارث ببرد پیاده سازی کند.

حالا میرویم به سراغ کلاس های فرزند. یعنی کلاس های خانه چوبی و خانه آجری.

class Woodenhouse : HouseTemplate
    {
        protected override void BuildCompleted()
        {
            Console.WriteLine("Wooden House Built");
        }

        protected override void BuildFoundation()
        {
            Console.WriteLine("Wooden House Foundation Built");
        }

        protected override void BuildInnerWalls()
        {
            Console.WriteLine("Wooden House Inner Walls Built");
        }

        protected override void BuildWalls()
        {
            Console.WriteLine("Wooden House Walls Built");
        }

        protected override void BuildWindows()
        {
            Console.WriteLine("Wooden House Windowses Built");
        }
    }
class BricksHouse : HouseTemplate
    {
        protected override void BuildCompleted()
        {
            Console.WriteLine("Bricks House Built");
        }

        protected override void BuildFoundation()
        {
            Console.WriteLine("Bricks House Foundation Built");
        }

        protected override void BuildInnerWalls()
        {
            Console.WriteLine("Bricks House Inner Walls Built");
        }

        protected override void BuildWalls()
        {
            Console.WriteLine("Bricks House Walls Built");
        }

        protected override void BuildWindows()
        {
            Console.WriteLine("Bricks House Windowses Built");
        }
    }

همانطور که میبینید، ما برای اینکه خانه ای بسازیم (از هر نوع) باید یک سری متد را حتما پیاده سازی کنیم.

حال به سراغ متد main میرویم.

static void Main(string[] args)
        {
            try
            {
                BricksHouse bricksHouse = new BricksHouse();
                bricksHouse.BuildHouse();

                Woodenhouse woodenhouse = new Woodenhouse();
                woodenhouse.BuildHouse();

            }
            catch (Exception ex)
            {
                ShowError(ex.Message);
            }
            Console.ReadLine();
        }

ما برای اینکه یک خانه را بسازیم نیازی نیست خودمان تک به تک مراحل را تکرار کنیم. با صدا زدن متد BuildHouse بر اساس پیاده سازی درونی کلاس های فرزند مراحل به ترتیب اجرا میشوند و خانه ساخته میشود.

برای آموزش رایگان در مورد انواع دیزاین پترن ها و معماری های نرم افزار می توانید به این آموزش مراجعه نمایید:

معماری نرم افزار مهم ترین پترن های معماری نرم افزار

دیزاین پترن یا الگوی طراحی چیست؟

دیزاین پترن  در حقیقت راه حل مسائل طراحی نرم افزار هستند که بارها و بارها در دنیای توسعه نرم افزار تکرار میشوند. الگوهایی از طراحی قابل استفاده مجدد (reusable) و تعامل اشیاء.

پرینت صفحه

هولوسن

با من یاد بگیر

آموزش های بیشتر در وبسایت هولوسن : https://holosen.net

بدون نظر

**پرسش و پاسخ** سوال خود مطرح کنید.
امتیاز شما*