C#'ta Template Method Design Pattern

C#'ta Template Method Design Pattern Kullanımı

Template Method Design Pattern, Behavioral Patterns Gurubu içerisinde yer alır.

Bir algoritmanın bütününü oluşturan farklı işlemler soyut bir yapıda altsınıf olarak tanımlanır. Bu altsınıflar algoritma bütünlüğü için gerekli işlemleri kendi içerisinde implemente ederler. Bu yolla algoritma altsınıflar tarafından işlenerek altsınıfların istekleri doğrultusunda çalışır.

Algoritmanın değişmeyen kısımları bir kere tanımlanır. Değişecek kısımların tanımlanması alt sınıflara bırakılır. Böylece Ana kalıp değişmeksizin, bazı ara adımlar değiştirilebilir.

namespace ConsoleApplication1

{

// Abstract Class

abstract class AbstractClass

{

public abstract void PrimitiveOperation1(); public abstract void PrimitiveOperation2();


// 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()");

}

}


// ConcreteClass

class ConcreteClassB : AbstractClass

{

public override void PrimitiveOperation1()

{

Console.WriteLine("ConcreteClassB.PrimitiveOperation1()");

}

public override void PrimitiveOperation2()

{

Console.WriteLine("ConcreteClassB.PrimitiveOperation2()");

}

}

// Client class Program

{

static void Main()

{

AbstractClass aA = new ConcreteClassA(); aA.TemplateMethod();


AbstractClass aB = new ConcreteClassB(); aB.TemplateMethod();


// Wait for user Console.ReadKey();

}

}


}


// Örnek 2

namespace ConsoleApplication1

{

abstract class KrediHesapAlgoritma

{

public abstract void Yontem1(); public abstract void Yontem2();


public void Hesapla(int tutar, int vade)

{

if (tutar < 400) Yontem1();

else

Yontem2();

Console.WriteLine("");

}

}


class Konut : KrediHesapAlgoritma

{

public override void Yontem1()

{

Console.WriteLine("% 0,5 oran ile");

}

public override void Yontem2()

{

Console.WriteLine("% 2 oran ile");

}

}


class Tasit : KrediHesapAlgoritma

{

public override void Yontem1()

{

Console.WriteLine("% 35 oran ile");

}

public override void Yontem2()

{

Console.WriteLine("% 32 oran ile");

}

}



class Program

{

static void Main()

{

KrediHesapAlgoritma konut = new Konut(); konut.Hesapla(500, 10);


KrediHesapAlgoritma tasit = new Tasit(); tasit.Hesapla(300, 10);


Console.ReadKey();

}

}

}

 

Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git