Template Design Pattern

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

این الگو از دو بخش زیر تشکیل شده:

کلاس ابسترکت: متر را به صورت ابسترکت شامل مشوند. بدین معنی که کلاسی که از آن به ارث میبره باید اون متد رو دوباره تعریف کنه.

کلاس های کانکریت: متد های ابسترکت کلاس ابسترکت رو تعریف می کنند.

مثال زیر رو در C# نگاه کنید:


// Template pattern -- Structural example

using System;

namespace DoFactory.GangOfFour.Template.Structural
{

// MainApp test application

class MainApp
{
staticvoid Main()
{
AbstractClass c;

c =
new ConcreteClassA();
c.TemplateMethod();

c =
new ConcreteClassB();
c.TemplateMethod();

// Wait for user
Console.Read();
}
}

// "AbstractClass"

abstract class AbstractClass
{
public abstract void PrimitiveOperation1();
public abstract void PrimitiveOperation2();

// The "Template method"
public void TemplateMethod()
{
PrimitiveOperation1();
PrimitiveOperation2();
Console.WriteLine("");
}
}

// "ConcreteClass"

class ConcreteClassA : AbstractClass
{
public override void PrimitiveOperation1()
{
Console.WriteLine("ConcreteClassA.PrimitiveOperation1()");
}
public override void PrimitiveOperation2()
{
Console.WriteLine("ConcreteClassA.PrimitiveOperation2()");
}
}

class ConcreteClassB : AbstractClass
{
public override void PrimitiveOperation1()
{
Console.WriteLine("ConcreteClassB.PrimitiveOperation1()");
}
public override void PrimitiveOperation2()
{
Console.WriteLine("ConcreteClassB.PrimitiveOperation2()");
}
}
}


Output

ConcreteClassA.PrimitiveOperation1()
ConcreteClassA.PrimitiveOperation2()

 

برای کسی که با مبانی شی گرایی آشنا باشه این الگو بسیار ساده و بدیهی به نظر می رسه.

منبع: http://www.dofactory.com/Patterns/PatternTemplate.aspx#_self1

احسان

/ 0 نظر / 99 بازدید